A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/doxyhtml/plan_8cpp_source.html below:

NCBI C++ ToolKit: src/objtools/pubseq_gateway/cassandra/fullscan/plan.cpp Source File

50

vector<SCassSizeEstimate> NormalizeSizeEstimates(vector<SCassSizeEstimate>

const

&

input

)

52

vector<SCassSizeEstimate>

output

;

55  for

(

auto const

& estimate :

input

) {

56  if

(estimate.range_start > current_range_start) {

59

new_estimate.

range_end

= estimate.range_start;

63

(estimate.range_end - estimate.range_start);

65  output

.push_back(new_estimate);

67

current_range_start = estimate.range_end;

68  output

.push_back(estimate);

78

(

last

->range_end -

last

->range_start);

80  output

.push_back(new_estimate);

86 void

VerifySizeEstimates(vector<SCassSizeEstimate>

const

& estimates)

95  for

(

auto

itr = estimates.cbegin(); itr != estimates.cend(); ++itr) {

96  if

(itr->range_start >= itr->range_end) {

98

<< itr->range_start <<

":"

<< itr->range_end);

100  if

(itr->partitions_count < 0) {

102

<< itr->range_start <<

":"

<< itr->range_end <<

" - "

<< itr->partitions_count);

105  if

(

next

!= estimates.cend() && itr->range_end !=

next

->range_start) {

107

<< itr->range_start <<

":"

<< itr->range_end

108

<<

" and "

<<

next

->range_start <<

":"

<<

next

->range_end);

113

constexpr

char const

*

const

kParamMinPartitionsForSubrangeScan =

"plan_partitions_for_subrange_scan"

;

114

constexpr

char const

*

const

kParamPartitionCountPerQuery =

"plan_partition_count_per_query"

;

169  ERR_POST

(

Warning

<<

"CCassandraFullscanPlanner::SetPartitionCountPerQueryLimit - wrong value ignored '"

<<

value

<<

"'"

);

183  string

datacenter,

schema

, schema_bytes;

184  int64_t

peers_count{0}, partition_count{0};

187  query

->SetSQL(

"SELECT data_center, schema_version, uuidAsBlob(schema_version) FROM system.local"

, 0);

188  query

->Query(CassConsistency::CASS_CONSISTENCY_LOCAL_ONE,

false

,

false

);

190

datacenter =

query

->FieldGetStrValue(0);

192

schema_bytes =

query

->FieldGetStrValue(2);

193  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - Datacenter '"

<< datacenter <<

"'"

);

194  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - Schema '"

<<

schema

<<

"'"

);

195  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - Bytes size "

<< schema_bytes.size());

198  query

->SetSQL(

"SELECT count(*) FROM system.peers WHERE data_center = ? and schema_version = ? ALLOW FILTERING"

, 2);

199  query

->BindStr(0, datacenter);

200  query

->BindBytes(1,

reinterpret_cast<const unsigned char

*

>

(schema_bytes.c_str()), schema_bytes.size());

201  query

->Query(CassConsistency::CASS_CONSISTENCY_LOCAL_ONE,

false

,

false

);

203

peers_count =

query

->FieldGetInt64Value(0, 0);

204  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - Peers count '"

<< peers_count <<

"'"

);

207  query

->SetSQL(

"SELECT partitions_count FROM system.size_estimates WHERE table_name = ? AND keyspace_name = ?"

, 2);

210  query

->Query(CassConsistency::CASS_CONSISTENCY_LOCAL_ONE,

false

,

false

);

212

partition_count +=

query

->FieldGetInt64Value(0);

215  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - " 216  "Local rows estimate - '"

<< partition_count <<

"'"

);

217  ERR_POST

(

Trace

<<

"CCassandraFullscanPlanner::GetTableRowsCountEstimate - " 218  "Total rows estimate - '"

<< partition_count * (peers_count + 1) <<

"'"

);

220  return

partition_count * (peers_count + 1);

225

shared_ptr<CCassQuery>

query

;

229  unsigned int

token_count{0};

256  ERR_POST

(

Trace

<<

"CCassandraFullscanPlan::SplitTokenRangesForLimits - " 257  "Local dc - '"

<< local_dc <<

"'"

);

259  ERR_POST

(

Trace

<<

"CCassandraFullscanPlan::SplitTokenRangesForLimits - " 260  "Local estimates size - '"

<< local_estimates.size() <<

"'"

);

261  auto

estimates = NormalizeSizeEstimates(local_estimates);

264

VerifySizeEstimates(estimates);

266  auto

search_start = begin(estimates);

269  auto

range_start = range.first;

270  auto

range_end = range.second;

273  auto

itr = search_start;

274  while

(itr != end(estimates) && itr->range_end <= range_start) {

281  while

(itr != end(estimates) && itr->range_start < range_end) {

282  auto

intersect_start =

max

(itr->range_start, range_start);

283  auto

intersect_end =

min

(itr->range_end, range_end);

285

(1.0 * (intersect_end - intersect_start)) /

286

(itr->range_end - itr->range_start);

287

partitions_count += size_ratio * itr->partitions_count;

295  int64_t

step = (range_end - range_start) / parts;

297  auto

start = range_start;

298  while

(start < range_end) {

299  auto

end = (range_end - start) < step ? range_end : (start + step);

300

result_ranges.push_back(make_pair(start, end));

304

result_ranges.push_back(range);

307

result_ranges.push_back(range);

340  string

partition =

NStr::Join

(partition_fields,

","

);

342

+

m_Keyspace

+

"."

+

m_Table

+

" WHERE TOKEN("

+ partition +

") > ? AND TOKEN("

+ partition +

") <= ?"

;

#define BEGIN_IDBLOB_SCOPE

vector< pair< TTokenValue, TTokenValue > > TTokenRanges

TParamsBinder m_WhereFilterParamsBinder

void SplitTokenRangesForLimits()

unsigned int m_WhereFilterParamsCount

CCassandraFullscanPlan & SetConnection(shared_ptr< CCassConnection > connection)

CCassandraFullscanPlan & SetWhereFilter(string const &where_filter)

size_t GetMinPartitionsForSubrangeScan()

TQueryPtr GetNextQuery() override

size_t m_MinPartitionsForSubrangeScan

size_t GetPartitionCountEstimate()

shared_ptr< CCassQuery > TQueryPtr

shared_ptr< CCassConnection > m_Connection

static constexpr size_t kMinPartitionsForSubrangeScanDefault

size_t GetQueryCount() const override

int64_t m_PartitionCountPerQueryLimit

CCassandraFullscanPlan & SetTable(string const &table)

CCassandraFullscanPlan & SetFieldList(vector< string > fields)

CCassandraFullscanPlan & SetMinPartitionsForSubrangeScan(size_t value)

vector< string > m_FieldList

CCassandraFullscanPlan & SetKeyspace(string const &keyspace)

void ApplyConfiguration(IRegistry const *registry, string const &section) override

CCassandraFullscanPlan & SetPartitionCountPerQueryLimit(int64_t value)

CCassConnection::TTokenRanges & GetTokenRanges()

CCassConnection::TTokenRanges m_TokenRanges

function< void(CCassQuery &query, int first_param_index)> TParamsBinder

The NCBI C++ standard methods for dealing with std::string.

static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)

static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)

static SQLCHAR output[256]

static const char * schema

void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)

#define ERR_POST(message)

Error posting with file, line number information but without error codes.

#define NCBI_THROW(exception_class, err_code, message)

Generic macro to throw an exception, given the exception class, error code and message string.

void Trace(CExceptionArgs_Base &args)

void Warning(CExceptionArgs_Base &args)

#define NCBI_THROW_FMT(exception_class, err_code, message)

The same as NCBI_THROW but with message processed as output to ostream.

virtual int GetInt(const string &section, const string &name, int default_value, TFlags flags=0, EErrAction err_action=eThrow) const

Get integer value of specified parameter name.

static string Join(const TContainer &arr, const CTempString &delim)

Join strings using the specified delimiter.

<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table

const GenericPointer< typename T::ValueType > T2 value

BEGIN_IDBLOB_SCOPE USING_NCBI_SCOPE

int64_t mean_partition_size


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4