[FEAT MERGE] information_schema enhence

This commit is contained in:
obdev
2023-01-13 03:42:07 +00:00
committed by OB-robot
parent 9ce9e1a357
commit ec56715ea5
98 changed files with 4513 additions and 3156 deletions

View File

@ -23,6 +23,9 @@
#include "sql/session/ob_sql_session_info.h"
#include "sql/resolver/ob_resolver_utils.h"
#include "sql/ob_sql_utils.h"
#include "sql/resolver/dml/ob_select_resolver.h"
#include "share/schema/ob_dependency_info.h"
#include "share/ob_tenant_id_schema_version.h"
@ -203,10 +206,39 @@ int ObCreateSynonymResolver::resolve(const ParseNode &parse_tree)
}
}
//well done.
//add def obj info if exists
bool ref_exists = false;
ObObjectType ref_type = ObObjectType::INVALID;
uint64_t ref_obj_id = OB_INVALID_ID;
uint64_t ref_schema_version = share::OB_INVALID_SCHEMA_VERSION;
uint64_t data_version = 0;
if (OB_FAIL(ret)) {
} else if (OB_FAIL(check_valid(create_synonym_stmt))) {
LOG_WARN("fail to check synonym stmt", K(ret));
} else if (OB_FAIL(GET_MIN_DATA_VERSION(session_info_->get_effective_tenant_id(), data_version))) {
LOG_WARN("failed to get data version", K(ret));
} else if (data_version >= DATA_VERSION_4_1_0_0
&& OB_FAIL(ObSQLUtils::find_synonym_ref_obj(create_synonym_stmt->get_object_database_name(),
create_synonym_stmt->get_object_name(),
session_info_->get_effective_tenant_id(),
ref_exists,
ref_obj_id,
ref_type,
ref_schema_version))) {
LOG_WARN("failed to find synonym ref obj", K(ret));
} else {
if (ref_exists) {
ObDependencyInfo dep;
dep.set_dep_obj_id(OB_INVALID_ID);
dep.set_dep_obj_type(ObObjectType::SYNONYM);
dep.set_ref_obj_id(ref_obj_id);
dep.set_ref_obj_type(ref_type);
dep.set_dep_timestamp(-1);
dep.set_ref_timestamp(ref_schema_version);
dep.set_tenant_id(session_info_->get_effective_tenant_id());
create_synonym_stmt->set_dependency_info(dep);
}
stmt_ = create_synonym_stmt;
}
}