summaryrefslogtreecommitdiff
path: root/dbaccess/source/core/api/column.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/core/api/column.cxx')
-rw-r--r--dbaccess/source/core/api/column.cxx19
1 files changed, 17 insertions, 2 deletions
diff --git a/dbaccess/source/core/api/column.cxx b/dbaccess/source/core/api/column.cxx
index f789394d23f9..89e17d0e3ce4 100644
--- a/dbaccess/source/core/api/column.cxx
+++ b/dbaccess/source/core/api/column.cxx
@@ -417,7 +417,16 @@ sdbcx::ObjectType OColumns::appendObject( const ::rtl::OUString& _rForName, cons
else if ( m_pTable && !m_pTable->isNew() )
{
if ( m_bAddColumn )
- xReturn = OColumns_BASE::appendObject( _rForName, descriptor );
+ {
+ Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
+ if ( xAlterService.is() )
+ {
+ xAlterService->addColumn(m_pTable,descriptor);
+ xReturn = createObject( _rForName );
+ }
+ else
+ xReturn = OColumns_BASE::appendObject( _rForName, descriptor );
+ }
else
::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_ADD ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
}
@@ -443,7 +452,13 @@ void OColumns::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
else if ( m_pTable && !m_pTable->isNew() )
{
if ( m_bDropColumn )
- OColumns_BASE::dropObject(_nPos,_sElementName);
+ {
+ Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
+ if ( xAlterService.is() )
+ xAlterService->dropColumn(m_pTable,_sElementName);
+ else
+ OColumns_BASE::dropObject(_nPos,_sElementName);
+ }
else
::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_DROP ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
}