Skip to content

Commit 9414717

Browse files
committedJun 20, 2014
oracle provider: reload fields after adding or deleting attributes (fixes #10102)
1 parent 427381e commit 9414717

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed
 

‎src/core/qgsvectorlayereditbuffer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
319319
attributeChangesOk = false; // don't try attribute updates - they'll fail.
320320
}
321321

322-
for ( int i = 0; i < oldFields.count(); ++i )
322+
for ( int i = 0; i < qMin( oldFields.count(), newFields.count() ); ++i )
323323
{
324324
const QgsField& oldField = oldFields[i];
325325
const QgsField& newField = newFields[i];

‎src/providers/oracle/qgsoracleprovider.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,7 @@ bool QgsOracleProvider::addAttributes( const QList<QgsField> &attributes )
14521452

14531453
for ( QList<QgsField>::const_iterator iter = attributes.begin(); iter != attributes.end(); ++iter )
14541454
{
1455-
QString type = iter->typeName();
1455+
QString type = iter->typeName().toLower();
14561456
if ( type == "char" || type == "varchar2" )
14571457
{
14581458
type = QString( "%1(%2 char)" ).arg( type ).arg( iter->length() );
@@ -1489,6 +1489,7 @@ bool QgsOracleProvider::addAttributes( const QList<QgsField> &attributes )
14891489
}
14901490

14911491
qry.finish();
1492+
14921493
}
14931494

14941495
if ( !db.commit() )
@@ -1504,6 +1505,11 @@ bool QgsOracleProvider::addAttributes( const QList<QgsField> &attributes )
15041505
returnvalue = false;
15051506
}
15061507

1508+
if( !loadFields() )
1509+
{
1510+
QgsMessageLog::logMessage( tr( "Could not reload fields." ), tr( "Oracle" ) );
1511+
}
1512+
15071513
return returnvalue;
15081514
}
15091515

@@ -1562,6 +1568,11 @@ bool QgsOracleProvider::deleteAttributes( const QgsAttributeIds& ids )
15621568
returnvalue = false;
15631569
}
15641570

1571+
if( !loadFields() )
1572+
{
1573+
QgsMessageLog::logMessage( tr( "Could not reload fields." ), tr( "Oracle" ) );
1574+
}
1575+
15651576
return returnvalue;
15661577
}
15671578

0 commit comments

Comments
 (0)
Please sign in to comment.