fix encoding param incorrect && extract query bugfix

This commit is contained in:
obdev
2023-06-27 04:18:25 +00:00
committed by ob-robot
parent fad1873583
commit 86313584f5
2 changed files with 8 additions and 28 deletions

View File

@ -24,6 +24,7 @@
#include "share/ob_lob_access_utils.h" #include "share/ob_lob_access_utils.h"
#include "lib/charset/ob_charset.h" #include "lib/charset/ob_charset.h"
namespace oceanbase namespace oceanbase
{ {
using namespace common; using namespace common;
@ -132,7 +133,7 @@ int ObQueryDriver::response_query_result(ObResultSet &result,
} }
} }
bool is_packed = result.get_physical_plan() ? result.get_physical_plan()->is_packed() : false; bool is_packed = result.get_physical_plan() ? result.get_physical_plan()->is_packed() : false;
MYSQL_PROTOCOL_TYPE protocol_type = is_ps_protocol ? BINARY : TEXT; MYSQL_PROTOCOL_TYPE protocol_type = is_ps_protocol ? MYSQL_PROTOCOL_TYPE::BINARY : MYSQL_PROTOCOL_TYPE::TEXT;
const common::ColumnsFieldIArray *fields = NULL; const common::ColumnsFieldIArray *fields = NULL;
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
fields = result.get_field_columns(); fields = result.get_field_columns();
@ -635,32 +636,11 @@ int ObQueryDriver::process_sql_udt_results(common::ObObj& value,
sql::ObSQLSessionInfo *session_info) sql::ObSQLSessionInfo *session_info)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
if (!value.is_xml_sql_type()) { UNUSED(value);
ret = OB_NOT_SUPPORTED; UNUSED(allocator);
OB_LOG(WARN, "not supported udt type", K(ret), UNUSED(session_info);
K(value.get_type()), K(value.get_udt_subschema_id())); ret = OB_NOT_SUPPORTED;
} else { OB_LOG(WARN, "not supported udt type", K(ret));
bool is_client_support_binary_xml = false; // client receive xml as json, like json
if (value.is_null() || value.is_nop_value()) {
// do nothing
} else if (is_client_support_binary_xml) {
// convert to udt client format
} else {
ObString data;
ObLobLocatorV2 loc(value.get_string(), true);
if (loc.is_null()) {
} else {
ObTextStringIter instr_iter(ObLongTextType, CS_TYPE_BINARY, value.get_string(), true);
if (OB_FAIL(instr_iter.init(0, session_info, allocator))) {
LOG_WARN("init lob str inter failed", K(ret), K(value));
} else if (OB_FAIL(instr_iter.get_full_data(data))) {
LOG_WARN("get xml full data failed", K(value));
} else {
value.set_udt_value(data.ptr(), data.length());
}
}
}
}
return ret; return ret;
} }

View File

@ -315,7 +315,7 @@ int ObSyncCmdDriver::response_query_result(ObMySQLResultSet &result)
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
MYSQL_PROTOCOL_TYPE protocol_type = result.is_ps_protocol() ? BINARY : TEXT; MYSQL_PROTOCOL_TYPE protocol_type = result.is_ps_protocol() ? MYSQL_PROTOCOL_TYPE::BINARY : MYSQL_PROTOCOL_TYPE::TEXT;
const ObSQLSessionInfo *tmp_session = result.get_exec_context().get_my_session(); const ObSQLSessionInfo *tmp_session = result.get_exec_context().get_my_session();
const ObDataTypeCastParams dtc_params = ObBasicSessionInfo::create_dtc_params(tmp_session); const ObDataTypeCastParams dtc_params = ObBasicSessionInfo::create_dtc_params(tmp_session);
ObSMRow sm_row(protocol_type, ObSMRow sm_row(protocol_type,