INTEGRATION: CWS dba16 (1.5.10); FILE MERGED
2004/10/11 11:38:19 oj 1.5.10.2: #i30220# enable having, group by for queries 2004/08/16 13:13:23 oj 1.5.10.1: #i32715# add not_equal
This commit is contained in:
@@ -2,9 +2,9 @@
|
|||||||
*
|
*
|
||||||
* $RCSfile: SingleSelectQueryComposer.cxx,v $
|
* $RCSfile: SingleSelectQueryComposer.cxx,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.5 $
|
* $Revision: 1.6 $
|
||||||
*
|
*
|
||||||
* last change: $Author: hr $ $Date: 2004-08-02 15:01:24 $
|
* last change: $Author: rt $ $Date: 2004-10-22 08:55:36 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
@@ -294,24 +294,24 @@ void SAL_CALL OSingleSelectQueryComposer::setQuery( const ::rtl::OUString& comma
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
void OSingleSelectQueryComposer::setQuery_Impl( const ::rtl::OUString& command )
|
void OSingleSelectQueryComposer::setQuery_Impl( const ::rtl::OUString& command )
|
||||||
{
|
{
|
||||||
const OSQLParseNode* pSqlParseNode = m_aSqlIterator.getParseTree();
|
|
||||||
m_aSqlIterator.setParseTree(NULL);
|
|
||||||
delete pSqlParseNode;
|
|
||||||
|
|
||||||
::rtl::OUString aErrorMsg;
|
::rtl::OUString aErrorMsg;
|
||||||
pSqlParseNode = m_aSqlParser.parseTree(aErrorMsg,command);
|
const OSQLParseNode* pNewSqlParseNode = m_aSqlParser.parseTree(aErrorMsg,command);
|
||||||
if ( !pSqlParseNode )
|
if ( !pNewSqlParseNode )
|
||||||
{
|
{
|
||||||
SQLException aError2(aErrorMsg,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,Any());
|
SQLException aError2(aErrorMsg,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,Any());
|
||||||
SQLException aError1(command,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,makeAny(aError2));
|
SQLException aError1(command,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,makeAny(aError2));
|
||||||
throw SQLException(m_aSqlParser.getContext().getErrorMessage(OParseContext::ERROR_GENERAL),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,makeAny(aError1));
|
throw SQLException(m_aSqlParser.getContext().getErrorMessage(OParseContext::ERROR_GENERAL),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,makeAny(aError1));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_aSqlIterator.setParseTree(pSqlParseNode);
|
const OSQLParseNode* pSqlParseNode = m_aSqlIterator.getParseTree();
|
||||||
|
m_aSqlIterator.setParseTree(NULL);
|
||||||
|
delete pSqlParseNode;
|
||||||
|
|
||||||
|
m_aSqlIterator.setParseTree(pNewSqlParseNode);
|
||||||
m_aSqlIterator.traverseAll();
|
m_aSqlIterator.traverseAll();
|
||||||
if (( m_aSqlIterator.getStatementType() != SQL_STATEMENT_SELECT
|
if (( m_aSqlIterator.getStatementType() != SQL_STATEMENT_SELECT
|
||||||
&& m_aSqlIterator.getStatementType() != SQL_STATEMENT_SELECT_COUNT)
|
&& m_aSqlIterator.getStatementType() != SQL_STATEMENT_SELECT_COUNT)
|
||||||
|| SQL_ISRULE(pSqlParseNode,union_statement) ) // #i4229# OJ
|
|| SQL_ISRULE(pNewSqlParseNode,union_statement) ) // #i4229# OJ
|
||||||
{
|
{
|
||||||
SQLException aError1(command,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,Any());
|
SQLException aError1(command,*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HY000")),1000,Any());
|
||||||
throw SQLException(DBACORE_RESSTRING(RID_STR_ONLY_QUERY),*this,
|
throw SQLException(DBACORE_RESSTRING(RID_STR_ONLY_QUERY),*this,
|
||||||
@@ -319,10 +319,10 @@ void OSingleSelectQueryComposer::setQuery_Impl( const ::rtl::OUString& command )
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_aWorkSql = STR_SELECT;
|
m_aWorkSql = STR_SELECT;
|
||||||
pSqlParseNode->getChild(1)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
pNewSqlParseNode->getChild(1)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
||||||
pSqlParseNode->getChild(2)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
pNewSqlParseNode->getChild(2)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
||||||
m_aWorkSql += STR_FROM;
|
m_aWorkSql += STR_FROM;
|
||||||
pSqlParseNode->getChild(3)->getChild(0)->getChild(1)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
pNewSqlParseNode->getChild(3)->getChild(0)->getChild(1)->parseNodeToStr(m_aWorkSql,m_xMetaData);
|
||||||
|
|
||||||
getColumns();
|
getColumns();
|
||||||
getTables();
|
getTables();
|
||||||
@@ -666,6 +666,8 @@ Reference< XNameAccess > SAL_CALL OSingleSelectQueryComposer::getColumns( ) thr
|
|||||||
xProp->getPropertyValue(PROPERTY_NAME) >>= sName;
|
xProp->getPropertyValue(PROPERTY_NAME) >>= sName;
|
||||||
pColumn->setRealName(::comphelper::getString(xProp->getPropertyValue(PROPERTY_REALNAME)));
|
pColumn->setRealName(::comphelper::getString(xProp->getPropertyValue(PROPERTY_REALNAME)));
|
||||||
pColumn->setTableName(::comphelper::getString(xProp->getPropertyValue(PROPERTY_TABLENAME)));
|
pColumn->setTableName(::comphelper::getString(xProp->getPropertyValue(PROPERTY_TABLENAME)));
|
||||||
|
pColumn->setFunction(::comphelper::getBOOL(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function")))));
|
||||||
|
pColumn->setAggregateFunction(::comphelper::getBOOL(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AggregateFunction")))));
|
||||||
(*aCols)[i-1] = pColumn;
|
(*aCols)[i-1] = pColumn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -822,6 +824,9 @@ sal_Int32 OSingleSelectQueryComposer::getPredicateType(OSQLParseNode * _pPredica
|
|||||||
case SQL_NODE_EQUAL:
|
case SQL_NODE_EQUAL:
|
||||||
nPredicate = SQLFilterOperator::EQUAL;
|
nPredicate = SQLFilterOperator::EQUAL;
|
||||||
break;
|
break;
|
||||||
|
case SQL_NODE_NOTEQUAL:
|
||||||
|
nPredicate = SQLFilterOperator::NOT_EQUAL;
|
||||||
|
break;
|
||||||
case SQL_NODE_LESS:
|
case SQL_NODE_LESS:
|
||||||
nPredicate = SQLFilterOperator::LESS;
|
nPredicate = SQLFilterOperator::LESS;
|
||||||
break;
|
break;
|
||||||
@@ -876,6 +881,10 @@ sal_Bool OSingleSelectQueryComposer::setComparsionPredicate(OSQLParseNode * pCon
|
|||||||
i--;
|
i--;
|
||||||
aItem.Handle = SQLFilterOperator::EQUAL;
|
aItem.Handle = SQLFilterOperator::EQUAL;
|
||||||
break;
|
break;
|
||||||
|
case SQL_NODE_NOTEQUAL:
|
||||||
|
i--;
|
||||||
|
aItem.Handle = SQLFilterOperator::NOT_EQUAL;
|
||||||
|
break;
|
||||||
case SQL_NODE_LESS:
|
case SQL_NODE_LESS:
|
||||||
// take the opposite as we change the order
|
// take the opposite as we change the order
|
||||||
i--;
|
i--;
|
||||||
@@ -1162,6 +1171,8 @@ namespace
|
|||||||
const Sequence< PropertyValue >* pOrIter = filter.getConstArray();
|
const Sequence< PropertyValue >* pOrIter = filter.getConstArray();
|
||||||
const Sequence< PropertyValue >* pOrEnd = pOrIter + filter.getLength();
|
const Sequence< PropertyValue >* pOrEnd = pOrIter + filter.getLength();
|
||||||
while ( pOrIter != pOrEnd )
|
while ( pOrIter != pOrEnd )
|
||||||
|
{
|
||||||
|
if ( pOrIter->getLength() )
|
||||||
{
|
{
|
||||||
sRet += L_BRACKET;
|
sRet += L_BRACKET;
|
||||||
const PropertyValue* pAndIter = pOrIter->getConstArray();
|
const PropertyValue* pAndIter = pOrIter->getConstArray();
|
||||||
@@ -1219,8 +1230,9 @@ namespace
|
|||||||
sRet += STR_AND;
|
sRet += STR_AND;
|
||||||
}
|
}
|
||||||
sRet += R_BRACKET;
|
sRet += R_BRACKET;
|
||||||
|
}
|
||||||
++pOrIter;
|
++pOrIter;
|
||||||
if ( pOrIter != pOrEnd )
|
if ( pOrIter != pOrEnd && sRet.getLength() )
|
||||||
sRet += STR_OR;
|
sRet += STR_OR;
|
||||||
}
|
}
|
||||||
return sRet;
|
return sRet;
|
||||||
@@ -1269,6 +1281,7 @@ void OSingleSelectQueryComposer::setConditionByColumn( const Reference< XPropert
|
|||||||
m_aCurrentColumns[SelectColumns]->getByName(aName) >>= xColumn;
|
m_aCurrentColumns[SelectColumns]->getByName(aName) >>= xColumn;
|
||||||
OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME),"Property REALNAME not available!");
|
OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME),"Property REALNAME not available!");
|
||||||
OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_TABLENAME),"Property TABLENAME not available!");
|
OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_TABLENAME),"Property TABLENAME not available!");
|
||||||
|
OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AggregateFunction"))),"Property AggregateFunctionnot available!");
|
||||||
|
|
||||||
::rtl::OUString sRealName,sTableName;
|
::rtl::OUString sRealName,sTableName;
|
||||||
xColumn->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
|
xColumn->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
|
||||||
@@ -1282,10 +1295,16 @@ void OSingleSelectQueryComposer::setConditionByColumn( const Reference< XPropert
|
|||||||
else
|
else
|
||||||
sTableName = ::dbtools::quoteName(aQuote,sTableName);
|
sTableName = ::dbtools::quoteName(aQuote,sTableName);
|
||||||
|
|
||||||
|
if ( !::comphelper::getBOOL(xColumn->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function")))) )
|
||||||
|
{
|
||||||
aSql = sTableName;
|
aSql = sTableName;
|
||||||
aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
|
aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
|
||||||
aSql += ::dbtools::quoteName(aQuote,sRealName);
|
aSql += ::dbtools::quoteName(aQuote,sRealName);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
aSql += sRealName;
|
||||||
|
|
||||||
|
}
|
||||||
else
|
else
|
||||||
aSql = getTableAlias(column) + ::dbtools::quoteName(aQuote,aName);
|
aSql = getTableAlias(column) + ::dbtools::quoteName(aQuote,aName);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user