dbms: removed few cyclic SharedPtr references [#CONV-2944].

This commit is contained in:
Alexey Milovidov 2013-05-05 18:02:05 +00:00
parent da4d2f91c9
commit 2efd1bc6b0
11 changed files with 50 additions and 29 deletions

View File

@ -239,7 +239,7 @@ private:
RPN rpn;
Context context;
const Context & context;
SortDescription sort_descr;
ColumnIndices pk_columns;
};

View File

@ -26,7 +26,7 @@ public:
const std::string & destination_database_, /// БД для создаваемых таблиц типа Chunks.
const std::string & destination_name_prefix_, /// Префикс имен создаваемых таблиц типа Chunks.
size_t chunks_to_merge_, /// Сколько чанков сливать в одну группу.
Context & context_); /// Известные таблицы.
Context & context_); /// Известные таблицы.
std::string getName() const { return "ChunkMerger"; }
std::string getTableName() const { return name; }
@ -56,7 +56,7 @@ private:
String destination_database;
std::string destination_name_prefix;
size_t chunks_to_merge;
Context context;
Context & context;
bool thread_should_quit;
boost::thread merge_thread;

View File

@ -12,7 +12,7 @@ namespace DB
class StorageChunkRef : public IStorage
{
public:
static StoragePtr create(const std::string & name_, NamesAndTypesListPtr columns_, Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach);
static StoragePtr create(const std::string & name_, NamesAndTypesListPtr columns_, const Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach);
std::string getName() const { return "ChunkRef"; }
std::string getTableName() const { return name; }
@ -35,9 +35,9 @@ public:
private:
String name;
NamesAndTypesListPtr columns;
Context context;
const Context & context;
StorageChunkRef(const std::string & name_, NamesAndTypesListPtr columns_, Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach);
StorageChunkRef(const std::string & name_, NamesAndTypesListPtr columns_, const Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach);
StorageChunks * getSource();
};

View File

@ -21,7 +21,7 @@ public:
const std::string & name_,
const std::string & database_name_,
NamesAndTypesListPtr columns_,
Context & context,
Context & context_,
bool attach);
void addReference();
@ -64,7 +64,7 @@ private:
ChunkIndices chunk_indices;
CounterInFile reference_counter;
Context context;
Context & context;
Logger * log;

View File

@ -20,7 +20,7 @@ public:
NamesAndTypesListPtr columns_, /// Список столбцов.
const String & source_database_, /// В какой БД искать таблицы-источники.
const String & table_name_regexp_, /// Регексп имён таблиц-источников.
Context & context_); /// Известные таблицы.
const Context & context_); /// Известные таблицы.
std::string getName() const { return "Merge"; }
std::string getTableName() const { return name; }
@ -44,14 +44,14 @@ private:
NamesAndTypesListPtr columns;
String source_database;
OptimizedRegularExpression table_name_regexp;
Context context;
const Context & context;
StorageMerge(
const std::string & name_,
NamesAndTypesListPtr columns_,
const String & source_database_,
const String & table_name_regexp_,
Context & context_);
const Context & context_);
};
}

View File

@ -111,7 +111,7 @@ public:
* index_granularity - на сколько строчек пишется одно значение индекса.
*/
static StoragePtr create(const String & path_, const String & name_, NamesAndTypesListPtr columns_,
Context & context_,
const Context & context_,
ASTPtr & primary_expr_ast_,
const String & date_column_name_,
const ASTPtr & sampling_expression_, /// NULL, если семплирование не поддерживается.
@ -162,7 +162,7 @@ private:
String full_path;
NamesAndTypesListPtr columns;
Context context;
const Context & context;
ASTPtr primary_expr_ast;
String date_column_name;
ASTPtr sampling_expression;
@ -288,7 +288,7 @@ private:
Poco::FastMutex data_parts_mutex;
StorageMergeTree(const String & path_, const String & name_, NamesAndTypesListPtr columns_,
Context & context_,
const Context & context_,
ASTPtr & primary_expr_ast_,
const String & date_column_name_,
const ASTPtr & sampling_expression_, /// NULL, если семплирование не поддерживается.

View File

@ -385,11 +385,13 @@ void StorageChunkMerger::mergeChunks(const Storages & chunks)
}
QueryProcessingStage::Enum processed_stage;
Settings settings = context.getSettings();
BlockInputStreams input_streams = src_storage->read(
src_column_names,
select_query_ptr,
context.getSettingsRef(),
settings,
processed_stage);
BlockInputStreamPtr input = new AddingDefaultBlockInputStream(new ConcatBlockInputStream(input_streams), required_columns);
@ -458,10 +460,10 @@ void StorageChunkMerger::mergeChunks(const Storages & chunks)
}
}
}
while(false);
while (false);
new_storage->removeReference();
LOG_TRACE(log, "Merged chunks.");
}

View File

@ -4,7 +4,7 @@
namespace DB
{
StoragePtr StorageChunkRef::create(const std::string & name_, NamesAndTypesListPtr columns_, Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach)
StoragePtr StorageChunkRef::create(const std::string & name_, NamesAndTypesListPtr columns_, const Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach)
{
return (new StorageChunkRef(name_, columns_, context_, source_database_name_, source_table_name_, attach))->thisPtr();
}
@ -31,7 +31,7 @@ void StorageChunkRef::dropImpl()
chunks->removeReference();
}
StorageChunkRef::StorageChunkRef(const std::string & name_, NamesAndTypesListPtr columns_, Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach)
StorageChunkRef::StorageChunkRef(const std::string & name_, NamesAndTypesListPtr columns_, const Context & context_, const std::string & source_database_name_, const std::string & source_table_name_, bool attach)
: source_database_name(source_database_name_), source_table_name(source_table_name_), name(name_), columns(columns_), context(context_)
{
if (!attach)

View File

@ -9,7 +9,13 @@
namespace DB
{
StoragePtr StorageChunks::create(const std::string & path_, const std::string & name_, const std::string & database_name_, NamesAndTypesListPtr columns_, Context & context_, bool attach)
StoragePtr StorageChunks::create(
const std::string & path_,
const std::string & name_,
const std::string & database_name_,
NamesAndTypesListPtr columns_,
Context & context_,
bool attach)
{
return (new StorageChunks(path_, name_, database_name_, columns_, context_, attach))->thisPtr();
}
@ -75,8 +81,20 @@ BlockOutputStreamPtr StorageChunks::writeToNewChunk(
return StorageLog::write(NULL);
}
StorageChunks::StorageChunks(const std::string & path_, const std::string & name_, const std::string & database_name_, NamesAndTypesListPtr columns_, Context & context_, bool attach)
: StorageLog(path_, name_, columns_), database_name(database_name_), index_loaded(false), reference_counter(path_ + escapeForFileName(name_) + "/refcount.txt"), context(context_), log(&Logger::get("StorageChunks"))
StorageChunks::StorageChunks(
const std::string & path_,
const std::string & name_,
const std::string & database_name_,
NamesAndTypesListPtr columns_,
Context & context_,
bool attach)
:
StorageLog(path_, name_, columns_),
database_name(database_name_),
index_loaded(false),
reference_counter(path_ + escapeForFileName(name_) + "/refcount.txt"),
context(context_),
log(&Logger::get("StorageChunks"))
{
if (!attach)
reference_counter.add(1, true);

View File

@ -10,7 +10,7 @@ StorageMerge::StorageMerge(
NamesAndTypesListPtr columns_,
const String & source_database_,
const String & table_name_regexp_,
Context & context_)
const Context & context_)
: name(name_), columns(columns_), source_database(source_database_), table_name_regexp(table_name_regexp_), context(context_)
{
}
@ -20,7 +20,7 @@ StoragePtr StorageMerge::create(
NamesAndTypesListPtr columns_,
const String & source_database_,
const String & table_name_regexp_,
Context & context_)
const Context & context_)
{
return (new StorageMerge(name_, columns_, source_database_, table_name_regexp_, context_))->thisPtr();
}

View File

@ -52,7 +52,7 @@ namespace DB
StorageMergeTree::StorageMergeTree(
const String & path_, const String & name_, NamesAndTypesListPtr columns_,
Context & context_,
const Context & context_,
ASTPtr & primary_expr_ast_,
const String & date_column_name_, const ASTPtr & sampling_expression_,
size_t index_granularity_,
@ -82,8 +82,9 @@ StorageMergeTree::StorageMergeTree(
sort_descr.push_back(SortColumnDescription(name, 1));
}
context.setColumns(*columns);
primary_expr = new Expression(primary_expr_ast, context);
Context tmp_context = context;
tmp_context.setColumns(*columns);
primary_expr = new Expression(primary_expr_ast, tmp_context);
primary_key_sample = primary_expr->getSampleBlock();
merge_threads = new boost::threadpool::pool(settings.merging_threads);
@ -93,7 +94,7 @@ StorageMergeTree::StorageMergeTree(
StoragePtr StorageMergeTree::create(
const String & path_, const String & name_, NamesAndTypesListPtr columns_,
Context & context_,
const Context & context_,
ASTPtr & primary_expr_ast_,
const String & date_column_name_, const ASTPtr & sampling_expression_,
size_t index_granularity_,