setSelectColumnName is always called with m_aSelectColumns as 1st arg

Change-Id: If86c4f48ed7eb6860f461fe905c0628cb9b73043
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122657
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx
index 95c0cd8..752caa8 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -852,7 +852,7 @@ bool OSQLParseTreeIterator::traverseSelectColumnNames(const OSQLParseNode* pSele
    if (pSelectNode->getChild(2)->isRule() && SQL_ISPUNCTUATION(pSelectNode->getChild(2)->getChild(0),"*"))
    {
        // SELECT * ...
        setSelectColumnName(m_aSelectColumns, "*", "", "");
        setSelectColumnName("*", "", "");
    }
    else if (SQL_ISRULE(pSelectNode->getChild(2),scalar_exp_commalist))
    {
@@ -872,7 +872,7 @@ bool OSQLParseTreeIterator::traverseSelectColumnNames(const OSQLParseNode* pSele
                // All the table's columns
                OUString aTableRange;
                pColumnRef->getChild(0)->parseNodeToStr( aTableRange, m_pImpl->m_xConnection, nullptr, false, false );
                setSelectColumnName(m_aSelectColumns, "*", "", aTableRange);
                setSelectColumnName("*", "", aTableRange);
                continue;
            }
            else if (SQL_ISRULE(pColumnRef,derived_column))
@@ -924,7 +924,7 @@ bool OSQLParseTreeIterator::traverseSelectColumnNames(const OSQLParseNode* pSele
                */
                if(aColumnAlias.isEmpty())
                    aColumnAlias = sColumnName;
                setSelectColumnName(m_aSelectColumns,sColumnName,aColumnAlias,aTableRange,bFkt,nType,SQL_ISRULE(pColumnRef,general_set_fct) || SQL_ISRULE(pColumnRef,set_fct_spec));
                setSelectColumnName(sColumnName,aColumnAlias,aTableRange,bFkt,nType,SQL_ISRULE(pColumnRef,general_set_fct) || SQL_ISRULE(pColumnRef,set_fct_spec));
            }
        }
    }
@@ -1567,21 +1567,19 @@ void OSQLParseTreeIterator::appendColumns(::rtl::Reference<OSQLColumns> const & 
    }
}

void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> const & _rColumns,const OUString & rColumnName,const OUString & rColumnAlias, const OUString & rTableRange, bool bFkt, sal_Int32 _nType, bool bAggFkt)
void OSQLParseTreeIterator::setSelectColumnName(const OUString & rColumnName,const OUString & rColumnAlias, const OUString & rTableRange, bool bFkt, sal_Int32 _nType, bool bAggFkt)
{
    if(rColumnName.toChar() == '*' && rTableRange.isEmpty())
    {   // SELECT * ...
        OSL_ENSURE(_rColumns == m_aSelectColumns,"Invalid columns used here!");
        for (auto const& table : *m_pImpl->m_pTables)
            appendColumns(_rColumns,table.first,table.second);
            appendColumns(m_aSelectColumns, table.first, table.second);
    }
    else if( rColumnName.toChar() == '*' && !rTableRange.isEmpty() )
    {   // SELECT <table>.*
        OSL_ENSURE(_rColumns == m_aSelectColumns,"Invalid columns used here!");
        OSQLTables::const_iterator aFind = m_pImpl->m_pTables->find(rTableRange);

        if(aFind != m_pImpl->m_pTables->end())
            appendColumns(_rColumns,rTableRange,aFind->second);
            appendColumns(m_aSelectColumns, rTableRange, aFind->second);
    }
    else if ( rTableRange.isEmpty() )
    {   // SELECT <something> ...
@@ -1642,7 +1640,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> co
                pColumn->setRealName( rColumnName );
            }

            _rColumns->push_back( xNewColumn );
            m_aSelectColumns->push_back( xNewColumn );
        }
        else
        {
@@ -1655,7 +1653,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> co
            pColumn->setAggregateFunction(bAggFkt);
            pColumn->setRealName(rColumnName);

            _rColumns->push_back(pColumn);
            m_aSelectColumns->push_back(pColumn);
        }
    }
    else    // ColumnName and TableName exist
@@ -1679,7 +1677,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> co
                assert(false);
                pColumn->setTableName(aFind->first);

                _rColumns->push_back(pColumn);
                m_aSelectColumns->push_back(pColumn);
            }
            else
            {
@@ -1693,7 +1691,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> co
                    pColumn->setRealName(rColumnName);
                    pColumn->setTableName(aFind->first);

                    _rColumns->push_back(pColumn);
                    m_aSelectColumns->push_back(pColumn);
                }
                else
                    bError = true;
@@ -1713,7 +1711,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns> co
            pColumn->setFunction(true);
            pColumn->setAggregateFunction(bAggFkt);

            _rColumns->push_back(pColumn);
            m_aSelectColumns->push_back(pColumn);
        }
    }
}
diff --git a/include/connectivity/sqliterator.hxx b/include/connectivity/sqliterator.hxx
index d0f3711..9cb6ce4 100644
--- a/include/connectivity/sqliterator.hxx
+++ b/include/connectivity/sqliterator.hxx
@@ -141,7 +141,7 @@ namespace connectivity
        css::uno::Reference< css::beans::XPropertySet > findSelectColumn(
            std::u16string_view rColumnName );

        void setSelectColumnName(::rtl::Reference<OSQLColumns> const & _rColumns,const OUString & rColumnName,const OUString & rColumnAlias, const OUString & rTableRange, bool bFkt=false, sal_Int32 _nType = css::sdbc::DataType::VARCHAR, bool bAggFkt=false);
        void setSelectColumnName(const OUString& rColumnName, const OUString& rColumnAlias, const OUString& rTableRange, bool bFkt = false, sal_Int32 _nType = css::sdbc::DataType::VARCHAR, bool bAggFkt = false);
        void appendColumns(::rtl::Reference<OSQLColumns> const & _rColumns,const OUString& _rTableAlias,const OSQLTable& _rTable);
        // Other member variables that should be available in the "set" functions
        // can be defined in the derived class. They can be initialized