summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-12-01 10:57:05 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-12-01 14:07:17 +0000
commit6269b62b525ec22471db56015ac2daed813ec5ff (patch)
treedb015083fe8f6f7aaf206bc68e9e5170094f6c97
parentc17f5bb6fb15239809e6b8439e9e443280bc2bde (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
-rw-r--r--connectivity/source/drivers/hsqldb/HView.cxx81
-rw-r--r--connectivity/source/inc/hsqldb/HView.hxx11
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;