php: Prepare for SplitQueryV2 migration.

See #1599
This commit is contained in:
Anthony Yeh 2016-03-30 12:19:24 -07:00
Родитель cbb9754f13
Коммит 1bec360439
4 изменённых файлов: 360 добавлений и 17 удалений

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

@ -18,15 +18,24 @@ namespace Vitess\Proto\Query {
/** @var \Vitess\Proto\Query\BoundQuery */
public $query = null;
/** @var string */
public $split_column = null;
/** @var string[] */
public $split_column = array();
/** @var int */
public $split_count = null;
/** @var int */
public $num_rows_per_query_part = null;
/** @var int */
public $session_id = null;
/** @var int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm */
public $algorithm = null;
/** @var boolean */
public $use_split_query_v2 = null;
/** @var \Closure[] */
protected static $__extensions = array();
@ -71,12 +80,12 @@ namespace Vitess\Proto\Query {
$f->reference = '\Vitess\Proto\Query\BoundQuery';
$descriptor->addField($f);
// OPTIONAL STRING split_column = 5
// REPEATED STRING split_column = 5
$f = new \DrSlump\Protobuf\Field();
$f->number = 5;
$f->name = "split_column";
$f->type = \DrSlump\Protobuf::TYPE_STRING;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$f->rule = \DrSlump\Protobuf::RULE_REPEATED;
$descriptor->addField($f);
// OPTIONAL INT64 split_count = 6
@ -87,6 +96,14 @@ namespace Vitess\Proto\Query {
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
// OPTIONAL INT64 num_rows_per_query_part = 8
$f = new \DrSlump\Protobuf\Field();
$f->number = 8;
$f->name = "num_rows_per_query_part";
$f->type = \DrSlump\Protobuf::TYPE_INT64;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
// OPTIONAL INT64 session_id = 7
$f = new \DrSlump\Protobuf\Field();
$f->number = 7;
@ -95,6 +112,23 @@ namespace Vitess\Proto\Query {
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
// OPTIONAL ENUM algorithm = 9
$f = new \DrSlump\Protobuf\Field();
$f->number = 9;
$f->name = "algorithm";
$f->type = \DrSlump\Protobuf::TYPE_ENUM;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$f->reference = '\Vitess\Proto\Query\SplitQueryRequest\Algorithm';
$descriptor->addField($f);
// OPTIONAL BOOL use_split_query_v2 = 10
$f = new \DrSlump\Protobuf\Field();
$f->number = 10;
$f->name = "use_split_query_v2";
$f->type = \DrSlump\Protobuf::TYPE_BOOL;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
foreach (self::$__extensions as $cb) {
$descriptor->addField($cb(), true);
}
@ -271,10 +305,11 @@ namespace Vitess\Proto\Query {
/**
* Get <split_column> value
*
* @param int $idx
* @return string
*/
public function getSplitColumn(){
return $this->_get(5);
public function getSplitColumn($idx = NULL){
return $this->_get(5, $idx);
}
/**
@ -283,8 +318,27 @@ namespace Vitess\Proto\Query {
* @param string $value
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function setSplitColumn( $value){
return $this->_set(5, $value);
public function setSplitColumn( $value, $idx = NULL){
return $this->_set(5, $value, $idx);
}
/**
* Get all elements of <split_column>
*
* @return string[]
*/
public function getSplitColumnList(){
return $this->_get(5);
}
/**
* Add a new element to <split_column>
*
* @param string $value
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function addSplitColumn( $value){
return $this->_add(5, $value);
}
/**
@ -324,6 +378,43 @@ namespace Vitess\Proto\Query {
return $this->_set(6, $value);
}
/**
* Check if <num_rows_per_query_part> has a value
*
* @return boolean
*/
public function hasNumRowsPerQueryPart(){
return $this->_has(8);
}
/**
* Clear <num_rows_per_query_part> value
*
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function clearNumRowsPerQueryPart(){
return $this->_clear(8);
}
/**
* Get <num_rows_per_query_part> value
*
* @return int
*/
public function getNumRowsPerQueryPart(){
return $this->_get(8);
}
/**
* Set <num_rows_per_query_part> value
*
* @param int $value
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function setNumRowsPerQueryPart( $value){
return $this->_set(8, $value);
}
/**
* Check if <session_id> has a value
*
@ -360,6 +451,80 @@ namespace Vitess\Proto\Query {
public function setSessionId( $value){
return $this->_set(7, $value);
}
/**
* Check if <algorithm> has a value
*
* @return boolean
*/
public function hasAlgorithm(){
return $this->_has(9);
}
/**
* Clear <algorithm> value
*
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function clearAlgorithm(){
return $this->_clear(9);
}
/**
* Get <algorithm> value
*
* @return int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm
*/
public function getAlgorithm(){
return $this->_get(9);
}
/**
* Set <algorithm> value
*
* @param int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm $value
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function setAlgorithm( $value){
return $this->_set(9, $value);
}
/**
* Check if <use_split_query_v2> has a value
*
* @return boolean
*/
public function hasUseSplitQueryV2(){
return $this->_has(10);
}
/**
* Clear <use_split_query_v2> value
*
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function clearUseSplitQueryV2(){
return $this->_clear(10);
}
/**
* Get <use_split_query_v2> value
*
* @return boolean
*/
public function getUseSplitQueryV2(){
return $this->_get(10);
}
/**
* Set <use_split_query_v2> value
*
* @param boolean $value
* @return \Vitess\Proto\Query\SplitQueryRequest
*/
public function setUseSplitQueryV2( $value){
return $this->_set(10, $value);
}
}
}

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

@ -0,0 +1,11 @@
<?php
// DO NOT EDIT! Generated by Protobuf-PHP protoc plugin 1.0
// Source: query.proto
namespace Vitess\Proto\Query\SplitQueryRequest {
class Algorithm extends \DrSlump\Protobuf\Enum {
const EQUAL_SPLITS = 0;
const FULL_SCAN = 1;
}
}

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

@ -15,12 +15,21 @@ namespace Vitess\Proto\Vtgate {
/** @var \Vitess\Proto\Query\BoundQuery */
public $query = null;
/** @var string */
public $split_column = null;
/** @var string[] */
public $split_column = array();
/** @var int */
public $split_count = null;
/** @var int */
public $num_rows_per_query_part = null;
/** @var int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm */
public $algorithm = null;
/** @var boolean */
public $use_split_query_v2 = null;
/** @var \Closure[] */
protected static $__extensions = array();
@ -55,12 +64,12 @@ namespace Vitess\Proto\Vtgate {
$f->reference = '\Vitess\Proto\Query\BoundQuery';
$descriptor->addField($f);
// OPTIONAL STRING split_column = 4
// REPEATED STRING split_column = 4
$f = new \DrSlump\Protobuf\Field();
$f->number = 4;
$f->name = "split_column";
$f->type = \DrSlump\Protobuf::TYPE_STRING;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$f->rule = \DrSlump\Protobuf::RULE_REPEATED;
$descriptor->addField($f);
// OPTIONAL INT64 split_count = 5
@ -71,6 +80,31 @@ namespace Vitess\Proto\Vtgate {
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
// OPTIONAL INT64 num_rows_per_query_part = 6
$f = new \DrSlump\Protobuf\Field();
$f->number = 6;
$f->name = "num_rows_per_query_part";
$f->type = \DrSlump\Protobuf::TYPE_INT64;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
// OPTIONAL ENUM algorithm = 7
$f = new \DrSlump\Protobuf\Field();
$f->number = 7;
$f->name = "algorithm";
$f->type = \DrSlump\Protobuf::TYPE_ENUM;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$f->reference = '\Vitess\Proto\Query\SplitQueryRequest\Algorithm';
$descriptor->addField($f);
// OPTIONAL BOOL use_split_query_v2 = 8
$f = new \DrSlump\Protobuf\Field();
$f->number = 8;
$f->name = "use_split_query_v2";
$f->type = \DrSlump\Protobuf::TYPE_BOOL;
$f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
$descriptor->addField($f);
foreach (self::$__extensions as $cb) {
$descriptor->addField($cb(), true);
}
@ -210,10 +244,11 @@ namespace Vitess\Proto\Vtgate {
/**
* Get <split_column> value
*
* @param int $idx
* @return string
*/
public function getSplitColumn(){
return $this->_get(4);
public function getSplitColumn($idx = NULL){
return $this->_get(4, $idx);
}
/**
@ -222,8 +257,27 @@ namespace Vitess\Proto\Vtgate {
* @param string $value
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function setSplitColumn( $value){
return $this->_set(4, $value);
public function setSplitColumn( $value, $idx = NULL){
return $this->_set(4, $value, $idx);
}
/**
* Get all elements of <split_column>
*
* @return string[]
*/
public function getSplitColumnList(){
return $this->_get(4);
}
/**
* Add a new element to <split_column>
*
* @param string $value
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function addSplitColumn( $value){
return $this->_add(4, $value);
}
/**
@ -262,6 +316,117 @@ namespace Vitess\Proto\Vtgate {
public function setSplitCount( $value){
return $this->_set(5, $value);
}
/**
* Check if <num_rows_per_query_part> has a value
*
* @return boolean
*/
public function hasNumRowsPerQueryPart(){
return $this->_has(6);
}
/**
* Clear <num_rows_per_query_part> value
*
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function clearNumRowsPerQueryPart(){
return $this->_clear(6);
}
/**
* Get <num_rows_per_query_part> value
*
* @return int
*/
public function getNumRowsPerQueryPart(){
return $this->_get(6);
}
/**
* Set <num_rows_per_query_part> value
*
* @param int $value
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function setNumRowsPerQueryPart( $value){
return $this->_set(6, $value);
}
/**
* Check if <algorithm> has a value
*
* @return boolean
*/
public function hasAlgorithm(){
return $this->_has(7);
}
/**
* Clear <algorithm> value
*
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function clearAlgorithm(){
return $this->_clear(7);
}
/**
* Get <algorithm> value
*
* @return int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm
*/
public function getAlgorithm(){
return $this->_get(7);
}
/**
* Set <algorithm> value
*
* @param int - \Vitess\Proto\Query\SplitQueryRequest\Algorithm $value
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function setAlgorithm( $value){
return $this->_set(7, $value);
}
/**
* Check if <use_split_query_v2> has a value
*
* @return boolean
*/
public function hasUseSplitQueryV2(){
return $this->_has(8);
}
/**
* Clear <use_split_query_v2> value
*
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function clearUseSplitQueryV2(){
return $this->_clear(8);
}
/**
* Get <use_split_query_v2> value
*
* @return boolean
*/
public function getUseSplitQueryV2(){
return $this->_get(8);
}
/**
* Set <use_split_query_v2> value
*
* @param boolean $value
* @return \Vitess\Proto\Vtgate\SplitQueryRequest
*/
public function setUseSplitQueryV2( $value){
return $this->_set(8, $value);
}
}
}

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

@ -204,13 +204,15 @@ class VTGateConn
return new VTGateTx($this->client, $response->getSession());
}
// TODO(erez): Migrate to SplitQueryV2 after it's stable.
public function splitQuery(Context $ctx, $keyspace, $query, array $bind_vars, $split_column, $split_count)
{
$request = new Proto\Vtgate\SplitQueryRequest();
$request->setKeyspace($keyspace);
$request->setQuery(ProtoUtils::BoundQuery($query, $bind_vars));
$request->setSplitColumn($split_column);
$request->addSplitColumn($split_column);
$request->setSplitCount($split_count);
$request->setUseSplitQueryV2(false);
if ($ctx->getCallerId()) {
$request->setCallerId($ctx->getCallerId());
}