mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 17:20:50 +00:00
add primary_key, partition_key, sampling_key sections in system.tables. add getPartitionExpression method in IStorage.
This commit is contained in:
parent
6aec41a2bd
commit
c9d8dc6171
@ -349,6 +349,9 @@ public:
|
||||
/// Returns primary expression for storage or nullptr if there is no.
|
||||
virtual ASTPtr getPrimaryExpression() const { return nullptr; }
|
||||
|
||||
/// Returns partition expression for storage or nullptr if there is no.
|
||||
virtual ASTPtr getPartitionExpression() const {return nullptr; }
|
||||
|
||||
using ITableDeclaration::ITableDeclaration;
|
||||
using std::enable_shared_from_this<IStorage>::shared_from_this;
|
||||
|
||||
|
@ -39,7 +39,10 @@ StorageSystemTables::StorageSystemTables(const std::string & name_)
|
||||
{"dependencies_database", std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>())},
|
||||
{"dependencies_table", std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>())},
|
||||
{"create_table_query", std::make_shared<DataTypeString>()},
|
||||
{"engine_full", std::make_shared<DataTypeString>()}
|
||||
{"engine_full", std::make_shared<DataTypeString>()},
|
||||
{"primary_key", std::make_shared<DataTypeString>()},
|
||||
{"partition_key", std::make_shared<DataTypeString>()},
|
||||
{"sample_key", std::make_shared<DataTypeString>()},
|
||||
}));
|
||||
}
|
||||
|
||||
@ -65,7 +68,7 @@ public:
|
||||
size_t max_block_size,
|
||||
ColumnPtr databases,
|
||||
const Context & context)
|
||||
: columns_mask(columns_mask), header(header), max_block_size(max_block_size), databases(std::move(databases)), context(context) {}
|
||||
: columns_mask(std::move(columns_mask)), header(std::move(header)), max_block_size(max_block_size), databases(std::move(databases)), context(context) {}
|
||||
|
||||
String getName() const override { return "Tables"; }
|
||||
Block getHeader() const override { return header; }
|
||||
@ -144,6 +147,15 @@ protected:
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insert(table.second->getName());
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insertDefault();
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insertDefault();
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insertDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@ -173,7 +185,7 @@ protected:
|
||||
res_columns[res_index++]->insert(tables_it->table()->getName());
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insert(0u);
|
||||
res_columns[res_index++]->insert(0u); // is_temporary
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
res_columns[res_index++]->insert(tables_it->table()->getDataPath());
|
||||
@ -234,6 +246,36 @@ protected:
|
||||
res_columns[res_index++]->insert(engine_full);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
src_index += 2;
|
||||
}
|
||||
|
||||
const auto table_it = context.getTable(database_name, table_name);
|
||||
ASTPtr expression_ptr;
|
||||
if (columns_mask[src_index++])
|
||||
{
|
||||
if ((expression_ptr = table_it->getPrimaryExpression()))
|
||||
res_columns[res_index++]->insert(queryToString(expression_ptr));
|
||||
else
|
||||
res_columns[res_index++]->insertDefault();
|
||||
}
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
{
|
||||
if ((expression_ptr = table_it->getPartitionExpression()))
|
||||
res_columns[res_index++]->insert(queryToString(expression_ptr));
|
||||
else
|
||||
res_columns[res_index++]->insertDefault();
|
||||
}
|
||||
|
||||
if (columns_mask[src_index++])
|
||||
{
|
||||
if ((expression_ptr = table_it->getSamplingExpression()))
|
||||
res_columns[res_index++]->insert(queryToString(expression_ptr));
|
||||
else
|
||||
res_columns[res_index++]->insertDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user