diff options
author | Lionel Elie Mamane <lionel@mamane.lu> | 2011-08-12 16:56:43 +0200 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2011-11-17 21:15:24 +0100 |
commit | 9f479d9334262f65ea844281ef0281ed736d59fe (patch) | |
tree | 14fa8d4c56d23dfc75c835f89f0c6ac089ece458 /connectivity/source/drivers/postgresql/pq_xcolumns.cxx | |
parent | 391193b62233866e0e6789c7606b5d8a87cebc3a (diff) |
pgsql-sdbc: properly delegate escaping to libpq
In particular, this makes it work whether server parameter standards_conforming_strings is off or on
Diffstat (limited to 'connectivity/source/drivers/postgresql/pq_xcolumns.cxx')
-rw-r--r-- | connectivity/source/drivers/postgresql/pq_xcolumns.cxx | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/connectivity/source/drivers/postgresql/pq_xcolumns.cxx b/connectivity/source/drivers/postgresql/pq_xcolumns.cxx index a424e3e253f5..ab033dc79bbf 100644 --- a/connectivity/source/drivers/postgresql/pq_xcolumns.cxx +++ b/connectivity/source/drivers/postgresql/pq_xcolumns.cxx @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * $RCSfile: pq_xcolumns.cxx,v $ @@ -381,7 +382,7 @@ void Columns::refresh() void alterColumnByDescriptor( const OUString & schemaName, const OUString & tableName, - rtl_TextEncoding encoding, + ConnectionSettings *settings, const Reference< XStatement > &stmt, const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > & past, const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > & future) @@ -415,9 +416,9 @@ void alterColumnByDescriptor( { // create a new column buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER TABLE" ) ); - bufferQuoteQualifiedIdentifier( buf, schemaName, tableName ); + bufferQuoteQualifiedIdentifier( buf, schemaName, tableName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ADD COLUMN" ) ); - bufferQuoteIdentifier( buf, futureColumnName ); + bufferQuoteIdentifier( buf, futureColumnName, settings ); buf.append( futureTypeName ); transaction.executeUpdate( buf.makeStringAndClear() ); } @@ -433,11 +434,11 @@ void alterColumnByDescriptor( if( pastColumnName != futureColumnName ) { buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER TABLE" ) ); - bufferQuoteQualifiedIdentifier( buf, schemaName, tableName ); + bufferQuoteQualifiedIdentifier( buf, schemaName, tableName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "RENAME COLUMN" ) ); - bufferQuoteIdentifier( buf, pastColumnName ); + bufferQuoteIdentifier( buf, pastColumnName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "TO" ) ); - bufferQuoteIdentifier( buf, futureColumnName ); + bufferQuoteIdentifier( buf, futureColumnName, settings ); transaction.executeUpdate( buf.makeStringAndClear() ); } } @@ -448,10 +449,11 @@ void alterColumnByDescriptor( { buf = OUStringBuffer( 128 ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER TABLE" ) ); - bufferQuoteQualifiedIdentifier( buf, schemaName, tableName ); + bufferQuoteQualifiedIdentifier( buf, schemaName, tableName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER COLUMN" ) ); - bufferQuoteIdentifier( buf, futureColumnName ); + bufferQuoteIdentifier( buf, futureColumnName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "SET DEFAULT " ) ); + // LEM TODO: check out // default value is not quoted, caller needs to quote himself (otherwise // how to pass e.g. nextval('something' ) ???? buf.append( futureDefaultValue ); @@ -465,9 +467,9 @@ void alterColumnByDescriptor( { buf = OUStringBuffer( 128 ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER TABLE" ) ); - bufferQuoteQualifiedIdentifier( buf, schemaName, tableName ); + bufferQuoteQualifiedIdentifier( buf, schemaName, tableName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "ALTER COLUMN" ) ); - bufferQuoteIdentifier( buf, futureColumnName ); + bufferQuoteIdentifier( buf, futureColumnName, settings ); if( futureNullable == com::sun::star::sdbc::ColumnValue::NO_NULLS ) { buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "SET" ) ); @@ -492,9 +494,9 @@ void alterColumnByDescriptor( { buf = OUStringBuffer( 128 ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "COMMENT ON COLUMN" ) ); - bufferQuoteQualifiedIdentifier( buf, schemaName, tableName , futureColumnName ); + bufferQuoteQualifiedIdentifier( buf, schemaName, tableName , futureColumnName, settings ); buf.appendAscii( RTL_CONSTASCII_STRINGPARAM( "IS " ) ); - bufferQuoteConstant( buf, futureComment,encoding); + bufferQuoteConstant( buf, futureComment, settings ); transaction.executeUpdate( buf.makeStringAndClear() ); } transaction.commit(); @@ -511,7 +513,7 @@ void Columns::appendByDescriptor( Reference< XPropertySet > past = createDataDescriptor(); past->setPropertyValue( st.IS_NULLABLE, makeAny( com::sun::star::sdbc::ColumnValue::NULLABLE ) ); alterColumnByDescriptor( - m_schemaName, m_tableName, m_pSettings->encoding, m_origin->createStatement() , past, future ); + m_schemaName, m_tableName, m_pSettings, m_origin->createStatement() , past, future ); refresh(); } @@ -564,9 +566,9 @@ void Columns::dropByIndex( sal_Int32 index ) OUStringBuffer update( 128 ); update.appendAscii( "ALTER TABLE ONLY"); - bufferQuoteQualifiedIdentifier( update, m_schemaName, m_tableName ); + bufferQuoteQualifiedIdentifier( update, m_schemaName, m_tableName, m_pSettings ); update.appendAscii( "DROP COLUMN" ); - bufferQuoteIdentifier( update, name ); + bufferQuoteIdentifier( update, name, m_pSettings ); Reference< XStatement > stmt = m_origin->createStatement( ); DisposeGuard disposeIt( stmt ); stmt->executeUpdate( update.makeStringAndClear() ); |