sqlbison.y string clean-up

Change-Id: I1ab32794a10f78f305de8057af5885d7719f87a3
This commit is contained in:
Stephan Bergmann
2013-11-26 23:09:35 +01:00
parent 37d7a59a3b
commit 2fde764591

View File

@@ -62,11 +62,11 @@ inline connectivity::OSQLInternalNode* newNode(const sal_Char* pNewValue,
const connectivity::SQLNodeType eNodeType, const connectivity::SQLNodeType eNodeType,
const sal_uInt32 nNodeID = 0); const sal_uInt32 nNodeID = 0);
inline connectivity::OSQLInternalNode* newNode(const ::rtl::OString& _NewValue, inline connectivity::OSQLInternalNode* newNode(const OString& _NewValue,
const connectivity::SQLNodeType eNodeType, const connectivity::SQLNodeType eNodeType,
const sal_uInt32 nNodeID = 0); const sal_uInt32 nNodeID = 0);
inline connectivity::OSQLInternalNode* newNode(const ::rtl::OUString& _NewValue, inline connectivity::OSQLInternalNode* newNode(const OUString& _NewValue,
const connectivity::SQLNodeType eNodeType, const connectivity::SQLNodeType eNodeType,
const sal_uInt32 nNodeID = 0); const sal_uInt32 nNodeID = 0);
@@ -4278,76 +4278,20 @@ connectivity::OSQLInternalNode* newNode(const sal_Char* pNewValue,
return new connectivity::OSQLInternalNode(pNewValue, eNodeType, nNodeID); return new connectivity::OSQLInternalNode(pNewValue, eNodeType, nNodeID);
} }
connectivity::OSQLInternalNode* newNode(const ::rtl::OString& _NewValue, connectivity::OSQLInternalNode* newNode(const OString& _NewValue,
const connectivity::SQLNodeType eNodeType, const connectivity::SQLNodeType eNodeType,
const sal_uInt32 nNodeID) const sal_uInt32 nNodeID)
{ {
return new connectivity::OSQLInternalNode(_NewValue, eNodeType, nNodeID); return new connectivity::OSQLInternalNode(_NewValue, eNodeType, nNodeID);
} }
connectivity::OSQLInternalNode* newNode(const ::rtl::OUString& _NewValue, connectivity::OSQLInternalNode* newNode(const OUString& _NewValue,
const connectivity::SQLNodeType eNodeType, const connectivity::SQLNodeType eNodeType,
const sal_uInt32 nNodeID) const sal_uInt32 nNodeID)
{ {
return new connectivity::OSQLInternalNode(_NewValue, eNodeType, nNodeID); return new connectivity::OSQLInternalNode(_NewValue, eNodeType, nNodeID);
} }
//============================================================
//= a helper for static ascii pseudo-unicode strings
//============================================================
// string constants
struct _ConstAsciiString_
{
sal_Int32 length;
sal_Char const* str;
operator rtl::OUString () const { return rtl::OUString(str, length, RTL_TEXTENCODING_ASCII_US); }
operator const sal_Char * () const { return str; }
operator ::rtl::OString() const { return str; }
};
#define IMPLEMENT_CONSTASCII_STRING( name, string ) \
_ConstAsciiString_ const name = { sizeof(string)-1, string }
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_GENERAL, "Syntax error in SQL expression");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_VALUE_NO_LIKE, "The value #1 can not be used with LIKE.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_FIELD_NO_LIKE, "LIKE can not be used with this field.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_COMPARE, "The entered criterion can not be compared with this field.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_DATE_COMPARE, "The field can not be compared with a date.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_REAL_COMPARE, "The field can not be compared with a floating point number.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_INT_COMPARE, "The field can not be compared with a number.");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_TABLE, "The database does not contain a table named \"#\".");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_TABLE_OR_QUERY, "The database does contain neither a table nor a query named \"#\".");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_COLUMN, "The column \"#1\" is unknown in the table \"#2\".");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_TABLE_EXIST, "The database already contains a table or view with name \"#\".");
IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_QUERY_EXIST, "The database already contains a query with name \"#\".");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_LIKE, "LIKE");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NOT, "NOT");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NULL, "NULL");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_FALSE, "False");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_IS, "IS");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_BETWEEN, "BETWEEN");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_OR, "OR");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_AND, "AND");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_AVG, "AVG");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_COUNT, "COUNT");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_MAX, "MAX");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_MIN, "MIN");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_SUM, "SUM");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_EVERY, "EVERY");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_ANY, "ANY");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_SOME, "SOME");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_STDDEV_POP, "STDDEV_POP");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_STDDEV_SAMP, "STDDEV_SAMP");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_VAR_SAMP, "VAR_SAMP");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_VAR_POP, "VAR_POP");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_COLLECT, "COLLECT");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_FUSION, "FUSION");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_INTERSECTION, "INTERSECTION");
//========================================================================== //==========================================================================
//= OParseContext //= OParseContext
//========================================================================== //==========================================================================
@@ -4362,23 +4306,23 @@ OParseContext::~OParseContext()
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
::rtl::OUString OParseContext::getErrorMessage(ErrorCode _eCode) const OUString OParseContext::getErrorMessage(ErrorCode _eCode) const
{ {
::rtl::OUString aMsg; OUString aMsg;
switch (_eCode) switch (_eCode)
{ {
case ERROR_GENERAL: aMsg = ERROR_STR_GENERAL; break; case ERROR_GENERAL: aMsg = "Syntax error in SQL expression"; break;
case ERROR_VALUE_NO_LIKE: aMsg = ERROR_STR_VALUE_NO_LIKE; break; case ERROR_VALUE_NO_LIKE: aMsg = "The value #1 can not be used with LIKE."; break;
case ERROR_FIELD_NO_LIKE: aMsg = ERROR_STR_FIELD_NO_LIKE; break; case ERROR_FIELD_NO_LIKE: aMsg = "LIKE can not be used with this field."; break;
case ERROR_INVALID_COMPARE: aMsg = ERROR_STR_INVALID_COMPARE; break; case ERROR_INVALID_COMPARE: aMsg = "The entered criterion can not be compared with this field."; break;
case ERROR_INVALID_INT_COMPARE: aMsg = ERROR_STR_INVALID_INT_COMPARE; break; case ERROR_INVALID_INT_COMPARE: aMsg = "The field can not be compared with a number."; break;
case ERROR_INVALID_DATE_COMPARE: aMsg = ERROR_STR_INVALID_DATE_COMPARE; break; case ERROR_INVALID_DATE_COMPARE: aMsg = "The field can not be compared with a date."; break;
case ERROR_INVALID_REAL_COMPARE: aMsg = ERROR_STR_INVALID_REAL_COMPARE; break; case ERROR_INVALID_REAL_COMPARE: aMsg = "The field can not be compared with a floating point number."; break;
case ERROR_INVALID_TABLE: aMsg = ERROR_STR_INVALID_TABLE; break; case ERROR_INVALID_TABLE: aMsg = "The database does not contain a table named \"#\"."; break;
case ERROR_INVALID_TABLE_OR_QUERY: aMsg = ERROR_STR_INVALID_TABLE_OR_QUERY; break; case ERROR_INVALID_TABLE_OR_QUERY: aMsg = "The database does contain neither a table nor a query named \"#\"."; break;
case ERROR_INVALID_COLUMN: aMsg = ERROR_STR_INVALID_COLUMN; break; case ERROR_INVALID_COLUMN: aMsg = "The column \"#1\" is unknown in the table \"#2\"."; break;
case ERROR_INVALID_TABLE_EXIST: aMsg = ERROR_STR_INVALID_TABLE_EXIST; break; case ERROR_INVALID_TABLE_EXIST: aMsg = "The database already contains a table or view with name \"#\"."; break;
case ERROR_INVALID_QUERY_EXIST: aMsg = ERROR_STR_INVALID_QUERY_EXIST; break; case ERROR_INVALID_QUERY_EXIST: aMsg = "The database already contains a query with name \"#\"."; break;
default: default:
OSL_FAIL( "OParseContext::getErrorMessage: unknown error code!" ); OSL_FAIL( "OParseContext::getErrorMessage: unknown error code!" );
break; break;
@@ -4387,35 +4331,35 @@ OParseContext::~OParseContext()
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
::rtl::OString OParseContext::getIntlKeywordAscii(InternationalKeyCode _eKey) const OString OParseContext::getIntlKeywordAscii(InternationalKeyCode _eKey) const
{ {
::rtl::OString aKeyword; OString aKeyword;
switch (_eKey) switch (_eKey)
{ {
case KEY_LIKE: aKeyword = KEY_STR_LIKE; break; case KEY_LIKE: aKeyword = "LIKE"; break;
case KEY_NOT: aKeyword = KEY_STR_NOT; break; case KEY_NOT: aKeyword = "NOT"; break;
case KEY_NULL: aKeyword = KEY_STR_NULL; break; case KEY_NULL: aKeyword = "NULL"; break;
case KEY_TRUE: aKeyword = KEY_STR_TRUE; break; case KEY_TRUE: aKeyword = "True"; break;
case KEY_FALSE: aKeyword = KEY_STR_FALSE; break; case KEY_FALSE: aKeyword = "False"; break;
case KEY_IS: aKeyword = KEY_STR_IS; break; case KEY_IS: aKeyword = "IS"; break;
case KEY_BETWEEN: aKeyword = KEY_STR_BETWEEN; break; case KEY_BETWEEN: aKeyword = "BETWEEN"; break;
case KEY_OR: aKeyword = KEY_STR_OR; break; case KEY_OR: aKeyword = "OR"; break;
case KEY_AND: aKeyword = KEY_STR_AND; break; case KEY_AND: aKeyword = "AND"; break;
case KEY_AVG: aKeyword = KEY_STR_AVG; break; case KEY_AVG: aKeyword = "AVG"; break;
case KEY_COUNT: aKeyword = KEY_STR_COUNT; break; case KEY_COUNT: aKeyword = "COUNT"; break;
case KEY_MAX: aKeyword = KEY_STR_MAX; break; case KEY_MAX: aKeyword = "MAX"; break;
case KEY_MIN: aKeyword = KEY_STR_MIN; break; case KEY_MIN: aKeyword = "MIN"; break;
case KEY_SUM: aKeyword = KEY_STR_SUM; break; case KEY_SUM: aKeyword = "SUM"; break;
case KEY_EVERY: aKeyword = KEY_STR_EVERY; break; case KEY_EVERY: aKeyword = "EVERY"; break;
case KEY_ANY: aKeyword = KEY_STR_ANY; break; case KEY_ANY: aKeyword = "ANY"; break;
case KEY_SOME: aKeyword = KEY_STR_SOME; break; case KEY_SOME: aKeyword = "SOME"; break;
case KEY_STDDEV_POP: aKeyword = KEY_STR_STDDEV_POP; break; case KEY_STDDEV_POP: aKeyword = "STDDEV_POP"; break;
case KEY_STDDEV_SAMP: aKeyword = KEY_STR_STDDEV_SAMP; break; case KEY_STDDEV_SAMP: aKeyword = "STDDEV_SAMP"; break;
case KEY_VAR_SAMP: aKeyword = KEY_STR_VAR_SAMP; break; case KEY_VAR_SAMP: aKeyword = "VAR_SAMP"; break;
case KEY_VAR_POP: aKeyword = KEY_STR_VAR_POP; break; case KEY_VAR_POP: aKeyword = "VAR_POP"; break;
case KEY_COLLECT: aKeyword = KEY_STR_COLLECT; break; case KEY_COLLECT: aKeyword = "COLLECT"; break;
case KEY_FUSION: aKeyword = KEY_STR_FUSION; break; case KEY_FUSION: aKeyword = "FUSION"; break;
case KEY_INTERSECTION:aKeyword = KEY_STR_INTERSECTION; break; case KEY_INTERSECTION:aKeyword = "INTERSECTION"; break;
case KEY_NONE: break; case KEY_NONE: break;
default: default:
OSL_FAIL( "OParseContext::getIntlKeywordAscii: unknown key!" ); OSL_FAIL( "OParseContext::getIntlKeywordAscii: unknown key!" );
@@ -4425,7 +4369,7 @@ OParseContext::~OParseContext()
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const OString& rToken) const
{ {
static IParseContext::InternationalKeyCode Intl_TokenID[] = static IParseContext::InternationalKeyCode Intl_TokenID[] =
{ {
@@ -4440,7 +4384,7 @@ IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
sal_uInt32 nCount = SAL_N_ELEMENTS( Intl_TokenID ); sal_uInt32 nCount = SAL_N_ELEMENTS( Intl_TokenID );
for (sal_uInt32 i = 0; i < nCount; i++) for (sal_uInt32 i = 0; i < nCount; i++)
{ {
::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]); OString aKey = getIntlKeywordAscii(Intl_TokenID[i]);
if (rToken.equalsIgnoreAsciiCase(aKey)) if (rToken.equalsIgnoreAsciiCase(aKey))
return Intl_TokenID[i]; return Intl_TokenID[i];
} }
@@ -4451,11 +4395,7 @@ IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
static Locale& impl_getLocaleInstance( ) static Locale& impl_getLocaleInstance( )
{ {
static Locale s_aLocale( static Locale s_aLocale( "en", "US", "" );
::rtl::OUString( "en" ),
::rtl::OUString( "US" ),
::rtl::OUString( )
);
return s_aLocale; return s_aLocale;
} }
@@ -4481,9 +4421,9 @@ const Locale& OParseContext::getDefaultLocale()
// Member-Variable. // Member-Variable.
//------------------------------------------------------------------ //------------------------------------------------------------------
::rtl::OUString ConvertLikeToken(const OSQLParseNode* pTokenNode, const OSQLParseNode* pEscapeNode, sal_Bool bInternational) OUString ConvertLikeToken(const OSQLParseNode* pTokenNode, const OSQLParseNode* pEscapeNode, sal_Bool bInternational)
{ {
::rtl::OUStringBuffer aMatchStr(0); OUStringBuffer aMatchStr(0);
if (pTokenNode->isToken()) if (pTokenNode->isToken())
{ {
sal_Unicode cEscape = 0; sal_Unicode cEscape = 0;
@@ -4493,7 +4433,7 @@ const Locale& OParseContext::getDefaultLocale()
// Platzhalter austauschen // Platzhalter austauschen
aMatchStr = pTokenNode->getTokenValue(); aMatchStr = pTokenNode->getTokenValue();
const sal_Int32 nLen = aMatchStr.getLength(); const sal_Int32 nLen = aMatchStr.getLength();
::rtl::OUStringBuffer sSearch,sReplace; OUStringBuffer sSearch,sReplace;
if ( bInternational ) if ( bInternational )
{ {
sSearch.appendAscii("%_",2); sSearch.appendAscii("%_",2);
@@ -4570,7 +4510,7 @@ void OSQLParser::setParseTree(OSQLParseNode * pNewParseTree)
See also getComment()/concatComment() implementation for See also getComment()/concatComment() implementation for
OQueryController::translateStatement(). OQueryController::translateStatement().
*/ */
static ::rtl::OUString delComment( const ::rtl::OUString& rQuery ) static OUString delComment( const OUString& rQuery )
{ {
// First a quick search if there is any "--" or "//" or "/*", if not then the whole // First a quick search if there is any "--" or "//" or "/*", if not then the whole
// copying loop is pointless. // copying loop is pointless.
@@ -4584,7 +4524,7 @@ static ::rtl::OUString delComment( const ::rtl::OUString& rQuery )
bool bIsText2 = false; // 'text' bool bIsText2 = false; // 'text'
bool bComment2 = false; // /* comment */ bool bComment2 = false; // /* comment */
bool bComment = false; // -- or // comment bool bComment = false; // -- or // comment
::rtl::OUStringBuffer aBuf(nQueryLen); OUStringBuffer aBuf(nQueryLen);
for (sal_Int32 i=0; i < nQueryLen; ++i) for (sal_Int32 i=0; i < nQueryLen; ++i)
{ {
if (bComment2) if (bComment2)
@@ -4625,8 +4565,8 @@ static ::rtl::OUString delComment( const ::rtl::OUString& rQuery )
return aBuf.makeStringAndClear(); return aBuf.makeStringAndClear();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage, OSQLParseNode* OSQLParser::parseTree(OUString& rErrorMessage,
const ::rtl::OUString& rStatement, const OUString& rStatement,
sal_Bool bInternational) sal_Bool bInternational)
{ {
@@ -4637,7 +4577,7 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
setParser(this); setParser(this);
// delete comments before parsing // delete comments before parsing
::rtl::OUString sTemp = delComment(rStatement); OUString sTemp = delComment(rStatement);
// defines how to scan // defines how to scan
s_pScanner->SetRule(s_pScanner->GetSQLRule()); // initial s_pScanner->SetRule(s_pScanner->GetSQLRule()); // initial
@@ -4646,7 +4586,7 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
SQLyylval.pParseNode = NULL; SQLyylval.pParseNode = NULL;
// SQLyypvt = NULL; // SQLyypvt = NULL;
m_pParseTree = NULL; m_pParseTree = NULL;
m_sErrorMessage = ::rtl::OUString(); m_sErrorMessage = "";
// start parsing // start parsing
if (SQLyyparse() != 0) if (SQLyyparse() != 0)
@@ -4677,9 +4617,9 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
::rtl::OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const IParseContext* pContext) OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const IParseContext* pContext)
{ {
::rtl::OString aStr; OString aStr;
if (pContext) if (pContext)
{ {
IParseContext::InternationalKeyCode eKeyCode = IParseContext::KEY_NONE; IParseContext::InternationalKeyCode eKeyCode = IParseContext::KEY_NONE;
@@ -4714,15 +4654,15 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
} }
#if OSL_DEBUG_LEVEL > 1 #if OSL_DEBUG_LEVEL > 1
::rtl::OUString OSQLParser::RuleIDToStr(sal_uInt32 nRuleID) OUString OSQLParser::RuleIDToStr(sal_uInt32 nRuleID)
{ {
OSL_ENSURE(nRuleID < SAL_N_ELEMENTS(yytname), "OSQLParser::RuleIDToStr: Invalid nRuleId!"); OSL_ENSURE(nRuleID < SAL_N_ELEMENTS(yytname), "OSQLParser::RuleIDToStr: Invalid nRuleId!");
return ::rtl::OUString::createFromAscii(yytname[nRuleID]); return OUString::createFromAscii(yytname[nRuleID]);
} }
#endif #endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
sal_uInt32 OSQLParser::StrToRuleID(const ::rtl::OString & rValue) sal_uInt32 OSQLParser::StrToRuleID(const OString & rValue)
{ {
// Search for the given name in yytname and return the index // Search for the given name in yytname and return the index
// (or UNKNOWN_RULE, if not found) // (or UNKNOWN_RULE, if not found)
@@ -4817,7 +4757,7 @@ sal_Int16 OSQLParser::buildStringNodes(OSQLParseNode*& pLiteral)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* pLiteral) sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* pLiteral)
{ {
OSQLParseNode* pComp = new OSQLInternalNode(::rtl::OUString("="), SQL_NODE_EQUAL); OSQLParseNode* pComp = new OSQLInternalNode("=", SQL_NODE_EQUAL);
return buildPredicateRule(pAppend,pLiteral,pComp); return buildPredicateRule(pAppend,pLiteral,pComp);
} }
@@ -4828,7 +4768,7 @@ void OSQLParser::reduceLiteral(OSQLParseNode*& pLiteral, sal_Bool bAppendBlank)
OSL_ENSURE(pLiteral->isRule(), "This is no ::com::sun::star::chaos::Rule"); OSL_ENSURE(pLiteral->isRule(), "This is no ::com::sun::star::chaos::Rule");
OSL_ENSURE(pLiteral->count() == 2, "OSQLParser::ReduceLiteral() Invalid count"); OSL_ENSURE(pLiteral->count() == 2, "OSQLParser::ReduceLiteral() Invalid count");
OSQLParseNode* pTemp = pLiteral; OSQLParseNode* pTemp = pLiteral;
::rtl::OUStringBuffer aValue(pLiteral->getChild(0)->getTokenValue()); OUStringBuffer aValue(pLiteral->getChild(0)->getTokenValue());
if (bAppendBlank) if (bAppendBlank)
{ {
aValue.appendAscii(" "); aValue.appendAscii(" ");
@@ -4845,17 +4785,17 @@ void OSQLParser::error(const sal_Char *fmt)
{ {
if(m_sErrorMessage.isEmpty()) if(m_sErrorMessage.isEmpty())
{ {
::rtl::OUString sStr(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8); OUString sStr(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8);
::rtl::OUString sSQL_TOKEN("SQL_TOKEN_"); OUString sSQL_TOKEN("SQL_TOKEN_");
sal_Int32 nPos1 = sStr.indexOf(sSQL_TOKEN); sal_Int32 nPos1 = sStr.indexOf(sSQL_TOKEN);
if(nPos1 != -1) if(nPos1 != -1)
{ {
::rtl::OUString sFirst = sStr.copy(0,nPos1); OUString sFirst = sStr.copy(0,nPos1);
sal_Int32 nPos2 = sStr.indexOf(sSQL_TOKEN,nPos1+1); sal_Int32 nPos2 = sStr.indexOf(sSQL_TOKEN,nPos1+1);
if(nPos2 != -1) if(nPos2 != -1)
{ {
::rtl::OUString sSecond = sStr.copy(nPos1+sSQL_TOKEN.getLength(),nPos2-nPos1-sSQL_TOKEN.getLength()); OUString sSecond = sStr.copy(nPos1+sSQL_TOKEN.getLength(),nPos2-nPos1-sSQL_TOKEN.getLength());
sFirst += sSecond; sFirst += sSecond;
sFirst += sStr.copy(nPos2+sSQL_TOKEN.getLength()); sFirst += sStr.copy(nPos2+sSQL_TOKEN.getLength());
} }
@@ -4867,10 +4807,10 @@ void OSQLParser::error(const sal_Char *fmt)
else else
m_sErrorMessage = sStr; m_sErrorMessage = sStr;
::rtl::OUString aError = s_pScanner->getErrorMessage(); OUString aError = s_pScanner->getErrorMessage();
if(!aError.isEmpty()) if(!aError.isEmpty())
{ {
m_sErrorMessage += ::rtl::OUString(", "); m_sErrorMessage += ", ";
m_sErrorMessage += aError; m_sErrorMessage += aError;
} }
} }