diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-12-01 10:57:05 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-12-01 14:07:17 +0000 |
commit | 6269b62b525ec22471db56015ac2daed813ec5ff (patch) | |
tree | db015083fe8f6f7aaf206bc68e9e5170094f6c97 /connectivity | |
parent | c17f5bb6fb15239809e6b8439e9e443280bc2bde (diff) |
Resolves: fdo#80938 fix SQL view to be editable
regression from
commit d60392fb5b387175dbd2e575848993c02c56922f
Author: Caolán McNamara <caolanm@redhat.com>
Date: Thu Mar 6 12:05:24 2014 +0000
coverity#706316 help out coverity re tortured logic
Change-Id: I2ee7bd3b7421ae46878d1b565ef14dd7b0bbd10e
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/hsqldb/HView.cxx | 81 | ||||
-rw-r--r-- | connectivity/source/inc/hsqldb/HView.hxx | 11 |
2 files changed, 63 insertions, 29 deletions
diff --git a/connectivity/source/drivers/hsqldb/HView.cxx b/connectivity/source/drivers/hsqldb/HView.cxx index bd4fa1bdb81c..72e9e8af48a6 100644 --- a/connectivity/source/drivers/hsqldb/HView.cxx +++ b/connectivity/source/drivers/hsqldb/HView.cxx @@ -101,7 +101,7 @@ namespace connectivity { namespace hsqldb aRestoreCommand.appendAscii( "CREATE VIEW " ); aRestoreCommand.append ( sQualifiedName ); aRestoreCommand.appendAscii( " AS " ); - aRestoreCommand.append ( impl_getCommand_throw() ); + aRestoreCommand.append ( impl_getCommand_throwSQLException() ); OUString sRestoreCommand( aRestoreCommand.makeStringAndClear() ); bool bDropSucceeded( false ); @@ -150,45 +150,47 @@ namespace connectivity { namespace hsqldb { // retrieve the very current command, don't rely on the base classes cached value // (which we initialized empty, anyway) - try - { - _rValue <<= impl_getCommand_throw(); - } - catch (const SQLException& e) - { - throw WrappedTargetException(e.Message, - static_cast< XAlterView* >( const_cast< HView* >( this ) ), - ::cppu::getCaughtException() ); - } + _rValue <<= impl_getCommand_wrapSQLException(); + return; } HView_Base::getFastPropertyValue( _rValue, _nHandle ); } + OUString HView::impl_getCommand() const + { + OUStringBuffer aCommand; + aCommand.appendAscii( "SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.SYSTEM_VIEWS " ); + HTools::appendTableFilterCrit( aCommand, m_CatalogName, m_SchemaName, m_Name, false ); + ::utl::SharedUNOComponent< XStatement > xStatement; xStatement.set( m_xConnection->createStatement(), UNO_QUERY_THROW ); + Reference< XResultSet > xResult( xStatement->executeQuery( aCommand.makeStringAndClear() ), UNO_QUERY_THROW ); + if ( !xResult->next() ) + { + // hmm. There is no view view the name as we know it. Can only mean some other instance + // dropped this view meanwhile ... + throw DisposedException(); + } - OUString HView::impl_getCommand_throw() const + Reference< XRow > xRow( xResult, UNO_QUERY_THROW ); + return xRow->getString( 1 ); + } + + OUString HView::impl_getCommand_wrapSQLException() const { OUString sCommand; try { - OUStringBuffer aCommand; - aCommand.appendAscii( "SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.SYSTEM_VIEWS " ); - HTools::appendTableFilterCrit( aCommand, m_CatalogName, m_SchemaName, m_Name, false ); - ::utl::SharedUNOComponent< XStatement > xStatement; xStatement.set( m_xConnection->createStatement(), UNO_QUERY_THROW ); - Reference< XResultSet > xResult( xStatement->executeQuery( aCommand.makeStringAndClear() ), UNO_QUERY_THROW ); - if ( !xResult->next() ) - { - // hmm. There is no view view the name as we know it. Can only mean some other instance - // dropped this view meanwhile ... - throw DisposedException(); - } - - Reference< XRow > xRow( xResult, UNO_QUERY_THROW ); - sCommand = xRow->getString( 1 ); + sCommand = impl_getCommand(); + } + catch( const RuntimeException& ) + { + throw; + } + catch( const SQLException& e ) + { + throw WrappedTargetException( e.Message, static_cast< XAlterView* >( const_cast< HView* >( this ) ), ::cppu::getCaughtException() ); } - catch( const RuntimeException& ) { throw; } - catch( const SQLException& ) { throw; } catch( const Exception& ) { DBG_UNHANDLED_EXCEPTION(); @@ -197,6 +199,29 @@ namespace connectivity { namespace hsqldb return sCommand; } + OUString HView::impl_getCommand_throwSQLException() const + { + OUString sCommand; + + try + { + sCommand = impl_getCommand(); + } + catch( const RuntimeException& ) + { + throw; + } + catch( const SQLException& ) + { + throw; + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + + return sCommand; + } } } // namespace connectivity::hsqldb diff --git a/connectivity/source/inc/hsqldb/HView.hxx b/connectivity/source/inc/hsqldb/HView.hxx index e13ff796734e..3e3d7cca8884 100644 --- a/connectivity/source/inc/hsqldb/HView.hxx +++ b/connectivity/source/inc/hsqldb/HView.hxx @@ -63,12 +63,21 @@ namespace connectivity { namespace hsqldb virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& _rValue, sal_Int32 _nHandle ) const SAL_OVERRIDE; private: + /** retrieves the current command of the View */ + OUString impl_getCommand() const; + + /** retrieves the current command of the View + + @throws ::com::sun::star::lang::WrappedTargetException + if an error occurs while retrieving the command from the database. + */ + OUString impl_getCommand_wrapSQLException() const; /** retrieves the current command of the View @throws ::com::sun::star::sdbc::SQLException if an error occurs while retrieving the command from the database. */ - OUString impl_getCommand_throw() const; + OUString impl_getCommand_throwSQLException() const; private: ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; |