You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/07/05 01:57:25 UTC
[doris] branch master updated: [feature-wip](multi-catalog) Add catalog to information_schema table "columns". (#10592)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 73ba806046 [feature-wip](multi-catalog) Add catalog to information_schema table "columns". (#10592)
73ba806046 is described below
commit 73ba806046510629ef3eab48d75b9e9a5263cc0a
Author: Jibing-Li <64...@users.noreply.github.com>
AuthorDate: Tue Jul 5 09:57:19 2022 +0800
[feature-wip](multi-catalog) Add catalog to information_schema table "columns". (#10592)
---
.../exec/schema_scanner/schema_columns_scanner.cpp | 22 ++++++++++++++++++++--
.../apache/doris/service/FrontendServiceImpl.java | 4 +++-
gensrc/thrift/FrontendService.thrift | 1 +
3 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/be/src/exec/schema_scanner/schema_columns_scanner.cpp b/be/src/exec/schema_scanner/schema_columns_scanner.cpp
index bac45b4ab3..bfa2c93e24 100644
--- a/be/src/exec/schema_scanner/schema_columns_scanner.cpp
+++ b/be/src/exec/schema_scanner/schema_columns_scanner.cpp
@@ -192,7 +192,18 @@ Status SchemaColumnsScanner::fill_one_row(Tuple* tuple, MemPool* pool) {
memset((void*)tuple, 0, _tuple_desc->num_null_bytes());
// TABLE_CATALOG
- { tuple->set_null(_tuple_desc->slots()[0]->null_indicator_offset()); }
+ {
+ if (!_db_result.__isset.catalogs) {
+ tuple->set_null(_tuple_desc->slots()[0]->null_indicator_offset());
+ } else {
+ void* slot = tuple->get_slot(_tuple_desc->slots()[0]->tuple_offset());
+ StringValue* str_slot = reinterpret_cast<StringValue*>(slot);
+ std::string catalog_name = _db_result.catalogs[_db_index - 1];
+ str_slot->ptr = (char*)pool->allocate(catalog_name.size());
+ str_slot->len = catalog_name.size();
+ memcpy(str_slot->ptr, catalog_name.c_str(), str_slot->len);
+ }
+ }
// TABLE_SCHEMA
{
void* slot = tuple->get_slot(_tuple_desc->slots()[1]->tuple_offset());
@@ -391,6 +402,9 @@ Status SchemaColumnsScanner::fill_one_row(Tuple* tuple, MemPool* pool) {
Status SchemaColumnsScanner::get_new_desc() {
TDescribeTableParams desc_params;
desc_params.__set_db(_db_result.dbs[_db_index - 1]);
+ if (_db_result.__isset.catalogs) {
+ desc_params.__set_catalog(_db_result.catalogs[_db_index - 1]);
+ }
desc_params.__set_table_name(_table_result.tables[_table_index++]);
if (nullptr != _param->current_user_ident) {
desc_params.__set_current_user_ident(*(_param->current_user_ident));
@@ -416,7 +430,11 @@ Status SchemaColumnsScanner::get_new_desc() {
Status SchemaColumnsScanner::get_new_table() {
TGetTablesParams table_params;
- table_params.__set_db(_db_result.dbs[_db_index++]);
+ table_params.__set_db(_db_result.dbs[_db_index]);
+ if (_db_result.__isset.catalogs) {
+ table_params.__set_catalog(_db_result.catalogs[_db_index]);
+ }
+ _db_index++;
if (nullptr != _param->table) {
table_params.__set_pattern(*(_param->table));
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
index b8041b03a3..12d9035fd5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
@@ -390,7 +390,9 @@ public class FrontendServiceImpl implements FrontendService.Iface {
return result;
}
- DatabaseIf<TableIf> db = Catalog.getCurrentCatalog().getCurrentDataSource().getDbNullable(params.db);
+ String catalog = Strings.isNullOrEmpty(params.catalog) ? InternalDataSource.INTERNAL_DS_NAME : params.catalog;
+ DatabaseIf<TableIf> db = Catalog.getCurrentCatalog().getDataSourceMgr()
+ .getCatalogOrException(catalog, ds -> new TException("Unknown catalog " + ds)).getDbNullable(params.db);
if (db != null) {
TableIf table = db.getTableNullable(params.getTableName());
if (table != null) {
diff --git a/gensrc/thrift/FrontendService.thrift b/gensrc/thrift/FrontendService.thrift
index ff59b203ba..2735d3bbc1 100644
--- a/gensrc/thrift/FrontendService.thrift
+++ b/gensrc/thrift/FrontendService.thrift
@@ -68,6 +68,7 @@ struct TDescribeTableParams {
4: optional string user_ip // deprecated
5: optional Types.TUserIdentity current_user_ident // to replace the user and user ip
6: optional bool show_hidden_columns = false
+ 7: optional string catalog
}
// Results of a call to describeTable()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org