fix unknown error when has not privilege to do query
This commit is contained in:
@ -452,6 +452,8 @@ int ObLogRestoreProxyUtil::check_begin_lsn(const uint64_t tenant_id)
|
|||||||
LOG_WARN("fail to generate sql", KR(ret), K(tenant_id));
|
LOG_WARN("fail to generate sql", KR(ret), K(tenant_id));
|
||||||
} else if (OB_FAIL(sql_proxy_.read(result, sql.ptr()))) {
|
} else if (OB_FAIL(sql_proxy_.read(result, sql.ptr()))) {
|
||||||
LOG_WARN("check_begin_lsn failed", KR(ret), K(tenant_id), K(sql));
|
LOG_WARN("check_begin_lsn failed", KR(ret), K(tenant_id), K(sql));
|
||||||
|
RESTORE_PROXY_USER_ERROR("tenant ls begin_lsn failed");
|
||||||
|
ret = OB_INVALID_ARGUMENT;
|
||||||
} else if (OB_ISNULL(result.get_result())) {
|
} else if (OB_ISNULL(result.get_result())) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("config result is null", KR(ret), K(tenant_id), K(sql));
|
LOG_WARN("config result is null", KR(ret), K(tenant_id), K(sql));
|
||||||
|
@ -393,6 +393,14 @@ int ObTenantResolver<T>::resolve_tenant_option(T *stmt, ParseNode *node,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHECK_SUPPORT_OPTION_USER_ERROR(args) \
|
||||||
|
{ \
|
||||||
|
LOG_USER_ERROR(OB_INVALID_ARGUMENT, args); \
|
||||||
|
ret = common::OB_INVALID_ARGUMENT; \
|
||||||
|
SQL_LOG(WARN, "invalid argument", KR(ret), K(node->type_)); \
|
||||||
|
break; \
|
||||||
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
int ObTenantResolver<T>::check_support_option(const T *stmt, const ParseNode *node)
|
int ObTenantResolver<T>::check_support_option(const T *stmt, const ParseNode *node)
|
||||||
{
|
{
|
||||||
@ -405,40 +413,34 @@ int ObTenantResolver<T>::check_support_option(const T *stmt, const ParseNode *no
|
|||||||
if (stmt->get_stmt_type() == stmt::T_CREATE_STANDBY_TENANT) {
|
if (stmt->get_stmt_type() == stmt::T_CREATE_STANDBY_TENANT) {
|
||||||
switch (node->type_) {
|
switch (node->type_) {
|
||||||
case T_REPLICA_NUM: {
|
case T_REPLICA_NUM: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "replica_num");
|
CHECK_SUPPORT_OPTION_USER_ERROR("replica_num");
|
||||||
}
|
}
|
||||||
case T_CHARSET: {
|
case T_CHARSET: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "charset");
|
CHECK_SUPPORT_OPTION_USER_ERROR("charset");
|
||||||
}
|
}
|
||||||
case T_COLLATION: {
|
case T_COLLATION: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "collation");
|
CHECK_SUPPORT_OPTION_USER_ERROR("collation");
|
||||||
}
|
}
|
||||||
case T_ENABLE_ARBITRATION_SERVICE: {
|
case T_ENABLE_ARBITRATION_SERVICE: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "enable_arbitration_service");
|
CHECK_SUPPORT_OPTION_USER_ERROR("enable_arbitration_service");
|
||||||
}
|
}
|
||||||
case T_ZONE_LIST: {
|
case T_ZONE_LIST: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "zone_list");
|
CHECK_SUPPORT_OPTION_USER_ERROR("zone_list");
|
||||||
}
|
}
|
||||||
case T_READ_ONLY: {
|
case T_READ_ONLY: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "read_only");
|
CHECK_SUPPORT_OPTION_USER_ERROR("read_only");
|
||||||
}
|
}
|
||||||
case T_LOGONLY_REPLICA_NUM: {
|
case T_LOGONLY_REPLICA_NUM: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "logonly_replica_num");
|
CHECK_SUPPORT_OPTION_USER_ERROR("logonly_replica_num");
|
||||||
}
|
}
|
||||||
case T_DEFAULT_TABLEGROUP: {
|
case T_DEFAULT_TABLEGROUP: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "default_tablegroup");
|
CHECK_SUPPORT_OPTION_USER_ERROR("default_tablegroup");
|
||||||
}
|
}
|
||||||
case T_PROGRESSIVE_MERGE_NUM: {
|
case T_PROGRESSIVE_MERGE_NUM: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "progressive_merge_num");
|
CHECK_SUPPORT_OPTION_USER_ERROR("progressive_merge_num");
|
||||||
}
|
}
|
||||||
case T_ENABLE_EXTENDED_ROWID: {
|
case T_ENABLE_EXTENDED_ROWID: {
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "enable_extended_rowid");
|
CHECK_SUPPORT_OPTION_USER_ERROR("enable_extended_rowid");
|
||||||
}
|
|
||||||
{
|
|
||||||
// not support option
|
|
||||||
ret = common::OB_INVALID_ARGUMENT;
|
|
||||||
SQL_LOG(WARN, "invalid argument", KR(ret), K(node->type_));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case T_LOCALITY:
|
case T_LOCALITY:
|
||||||
|
Reference in New Issue
Block a user