TraceObjects.cpp (Firebird-3.0.2.32703-0.tar.bz2) | : | TraceObjects.cpp (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 183 | skipping to change at line 183 | |||
const string* stmtText = m_stmt->getStatement()->getSqlText(); | const string* stmtText = m_stmt->getStatement()->getSqlText(); | |||
return stmtText ? stmtText->c_str() : ""; | return stmtText ? stmtText->c_str() : ""; | |||
} | } | |||
const char* TraceSQLStatementImpl::getTextUTF8() | const char* TraceSQLStatementImpl::getTextUTF8() | |||
{ | { | |||
const string* stmtText = m_stmt->getStatement()->getSqlText(); | const string* stmtText = m_stmt->getStatement()->getSqlText(); | |||
if (m_textUTF8.isEmpty() && stmtText && !stmtText->isEmpty()) | if (m_textUTF8.isEmpty() && stmtText && !stmtText->isEmpty()) | |||
{ | { | |||
if (!DataTypeUtil::convertToUTF8(*stmtText, m_textUTF8)) | if (!DataTypeUtil::convertToUTF8(*stmtText, m_textUTF8, CS_dynami c, status_exception::raise)) | |||
return stmtText->c_str(); | return stmtText->c_str(); | |||
} | } | |||
return m_textUTF8.c_str(); | return m_textUTF8.c_str(); | |||
} | } | |||
const char* TraceSQLStatementImpl::getPlan() | const char* TraceSQLStatementImpl::getPlan() | |||
{ | { | |||
fillPlan(false); | fillPlan(false); | |||
return m_plan.c_str(); | return m_plan.c_str(); | |||
skipping to change at line 279 | skipping to change at line 279 | |||
const dsc* TraceSQLStatementImpl::DSQLParamsImpl::getParam(FB_SIZE_T idx) | const dsc* TraceSQLStatementImpl::DSQLParamsImpl::getParam(FB_SIZE_T idx) | |||
{ | { | |||
fillParams(); | fillParams(); | |||
if (idx >= 0 && idx < m_descs.getCount()) | if (idx >= 0 && idx < m_descs.getCount()) | |||
return &m_descs[idx]; | return &m_descs[idx]; | |||
return NULL; | return NULL; | |||
} | } | |||
const char* TraceSQLStatementImpl::DSQLParamsImpl::getTextUTF8(CheckStatusWrappe | ||||
r* status, FB_SIZE_T idx) | ||||
{ | ||||
const dsc* param = getParam(idx); | ||||
UCHAR* address; | ||||
USHORT length; | ||||
switch (param->dsc_dtype) | ||||
{ | ||||
case dtype_text: | ||||
address = param->dsc_address; | ||||
length = param->dsc_length; | ||||
break; | ||||
case dtype_varying: | ||||
address = param->dsc_address + sizeof(USHORT); | ||||
length = *(USHORT*)param->dsc_address; | ||||
break; | ||||
default: | ||||
return NULL; | ||||
} | ||||
string src(address, length); | ||||
try | ||||
{ | ||||
if (!DataTypeUtil::convertToUTF8(src, temp_utf8_text, param->dsc_ | ||||
sub_type, status_exception::raise)) | ||||
temp_utf8_text = src; | ||||
} | ||||
catch (const Firebird::Exception&) | ||||
{ | ||||
temp_utf8_text = src; | ||||
} | ||||
return temp_utf8_text.c_str(); | ||||
} | ||||
/// TraceFailedSQLStatement | /// TraceFailedSQLStatement | |||
const char* TraceFailedSQLStatement::getTextUTF8() | const char* TraceFailedSQLStatement::getTextUTF8() | |||
{ | { | |||
if (m_textUTF8.isEmpty() && !m_text.isEmpty()) | if (m_textUTF8.isEmpty() && !m_text.isEmpty()) | |||
{ | { | |||
if (!DataTypeUtil::convertToUTF8(m_text, m_textUTF8)) | if (!DataTypeUtil::convertToUTF8(m_text, m_textUTF8, CS_dynamic, status_exception::raise)) | |||
return m_text.c_str(); | return m_text.c_str(); | |||
} | } | |||
return m_textUTF8.c_str(); | return m_textUTF8.c_str(); | |||
} | } | |||
/// TraceParamsImpl | /// TraceParamsImpl | |||
FB_SIZE_T TraceParamsImpl::getCount() | FB_SIZE_T TraceParamsImpl::getCount() | |||
{ | { | |||
return m_descs->getCount(); | return m_descs->getCount(); | |||
} | } | |||
const dsc* TraceParamsImpl::getParam(FB_SIZE_T idx) | const dsc* TraceParamsImpl::getParam(FB_SIZE_T idx) | |||
{ | { | |||
return m_descs->getParam(idx); | return m_descs->getParam(idx); | |||
} | } | |||
const char* TraceParamsImpl::getTextUTF8(CheckStatusWrapper* status, FB_SIZE_T i | ||||
dx) | ||||
{ | ||||
const dsc* param = getParam(idx); | ||||
UCHAR* address; | ||||
USHORT length; | ||||
switch (param->dsc_dtype) | ||||
{ | ||||
case dtype_text: | ||||
address = param->dsc_address; | ||||
length = param->dsc_length; | ||||
break; | ||||
case dtype_varying: | ||||
address = param->dsc_address + sizeof(USHORT); | ||||
length = *(USHORT*)param->dsc_address; | ||||
break; | ||||
default: | ||||
return NULL; | ||||
} | ||||
string src(address, length); | ||||
try | ||||
{ | ||||
if (!DataTypeUtil::convertToUTF8(src, temp_utf8_text, param->dsc_ | ||||
sub_type, status_exception::raise)) | ||||
temp_utf8_text = src; | ||||
} | ||||
catch (const Firebird::Exception&) | ||||
{ | ||||
temp_utf8_text = src; | ||||
} | ||||
return temp_utf8_text.c_str(); | ||||
} | ||||
/// TraceDscFromValues | /// TraceDscFromValues | |||
void TraceDscFromValues::fillParams() | void TraceDscFromValues::fillParams() | |||
{ | { | |||
if (m_descs.getCount() || !m_params) | if (m_descs.getCount() || !m_params) | |||
return; | return; | |||
thread_db* tdbb = JRD_get_thread_data(); | thread_db* tdbb = JRD_get_thread_data(); | |||
const NestConst<ValueExprNode>* ptr = m_params->items.begin(); | const NestConst<ValueExprNode>* ptr = m_params->items.begin(); | |||
End of changes. 4 change blocks. | ||||
2 lines changed or deleted | 80 lines changed or added |