Skip to content

Commit c800998

Browse files
committedDec 5, 2016
Remove goto's from qgsspatialiteprovider.cpp
1 parent bd8d212 commit c800998

File tree

2 files changed

+109
-211
lines changed

2 files changed

+109
-211
lines changed
 

‎src/providers/spatialite/qgsspatialiteprovider.cpp

Lines changed: 104 additions & 211 deletions
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,11 @@ void QgsSpatiaLiteProvider::fetchConstraints()
833833

834834
int ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
835835
if ( ret != SQLITE_OK )
836-
goto error;
836+
{
837+
handleError( sql, errMsg );
838+
return;
839+
}
840+
837841
if ( rows < 1 )
838842
;
839843
else
@@ -874,17 +878,6 @@ void QgsSpatiaLiteProvider::fetchConstraints()
874878
constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider );
875879
mAttributeFields[ fieldIdx ].setConstraints( constraints );
876880
}
877-
878-
return;
879-
880-
error:
881-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
882-
// unexpected error
883-
if ( errMsg )
884-
{
885-
sqlite3_free( errMsg );
886-
}
887-
888881
}
889882

890883
void QgsSpatiaLiteProvider::insertDefaultValue( int fieldIndex, QString defaultVal )
@@ -918,6 +911,22 @@ void QgsSpatiaLiteProvider::insertDefaultValue( int fieldIndex, QString defaultV
918911
}
919912
}
920913

914+
void QgsSpatiaLiteProvider::handleError( const QString& sql, char* errorMessage, bool rollback )
915+
{
916+
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errorMessage ? errorMessage : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
917+
// unexpected error
918+
if ( errorMessage )
919+
{
920+
sqlite3_free( errorMessage );
921+
}
922+
923+
if ( rollback )
924+
{
925+
// ROLLBACK after some previous error
926+
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
927+
}
928+
}
929+
921930
void QgsSpatiaLiteProvider::loadFields()
922931
{
923932
int ret;
@@ -943,7 +952,10 @@ void QgsSpatiaLiteProvider::loadFields()
943952

944953
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
945954
if ( ret != SQLITE_OK )
946-
goto error;
955+
{
956+
handleError( sql, errMsg );
957+
return;
958+
}
947959
if ( rows < 1 )
948960
;
949961
else
@@ -1044,16 +1056,6 @@ void QgsSpatiaLiteProvider::loadFields()
10441056
}
10451057

10461058
updatePrimaryKeyCapabilities();
1047-
1048-
return;
1049-
1050-
error:
1051-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
1052-
// unexpected error
1053-
if ( errMsg )
1054-
{
1055-
sqlite3_free( errMsg );
1056-
}
10571059
}
10581060

10591061

@@ -4019,7 +4021,6 @@ QString createIndexName( QString tableName, QString field )
40194021
bool QgsSpatiaLiteProvider::createAttributeIndex( int field )
40204022
{
40214023
char *errMsg = nullptr;
4022-
bool toCommit = false;
40234024

40244025
if ( field < 0 || field >= mAttributeFields.count() )
40254026
return false;
@@ -4030,10 +4031,9 @@ bool QgsSpatiaLiteProvider::createAttributeIndex( int field )
40304031
int ret = sqlite3_exec( mSqliteHandle, "BEGIN", nullptr, nullptr, &errMsg );
40314032
if ( ret != SQLITE_OK )
40324033
{
4033-
// some error occurred
4034-
goto abort;
4034+
handleError( sql, errMsg );
4035+
return false;
40354036
}
4036-
toCommit = true;
40374037

40384038
fieldName = mAttributeFields.at( field ).name();
40394039

@@ -4044,49 +4044,32 @@ bool QgsSpatiaLiteProvider::createAttributeIndex( int field )
40444044
ret = sqlite3_exec( mSqliteHandle, sql.toUtf8().constData(), nullptr, nullptr, &errMsg );
40454045
if ( ret != SQLITE_OK )
40464046
{
4047-
// some error occurred
4048-
goto abort;
4047+
handleError( sql, errMsg, true );
4048+
return false;
40494049
}
40504050

40514051
ret = sqlite3_exec( mSqliteHandle, "COMMIT", nullptr, nullptr, &errMsg );
40524052
if ( ret != SQLITE_OK )
40534053
{
4054-
// some error occurred
4055-
goto abort;
4054+
handleError( sql, errMsg, true );
4055+
return false;
40564056
}
40574057

40584058
return true;
4059-
4060-
abort:
4061-
pushError( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ) );
4062-
if ( errMsg )
4063-
{
4064-
sqlite3_free( errMsg );
4065-
}
4066-
4067-
if ( toCommit )
4068-
{
4069-
// ROLLBACK after some previous error
4070-
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
4071-
}
4072-
4073-
return false;
40744059
}
40754060

40764061
bool QgsSpatiaLiteProvider::deleteFeatures( const QgsFeatureIds &id )
40774062
{
40784063
sqlite3_stmt *stmt = nullptr;
40794064
char *errMsg = nullptr;
4080-
bool toCommit = false;
40814065
QString sql;
40824066

40834067
int ret = sqlite3_exec( mSqliteHandle, "BEGIN", nullptr, nullptr, &errMsg );
40844068
if ( ret != SQLITE_OK )
40854069
{
4086-
// some error occurred
4087-
goto abort;
4070+
handleError( sql, errMsg );
4071+
return false;
40884072
}
4089-
toCommit = true;
40904073

40914074
sql = QStringLiteral( "DELETE FROM %1 WHERE %2=?" ).arg( quotedIdentifier( mTableName ), quotedIdentifier( mPrimaryKey ) );
40924075

@@ -4120,40 +4103,25 @@ bool QgsSpatiaLiteProvider::deleteFeatures( const QgsFeatureIds &id )
41204103
const char *err = sqlite3_errmsg( mSqliteHandle );
41214104
errMsg = ( char * ) sqlite3_malloc(( int ) strlen( err ) + 1 );
41224105
strcpy( errMsg, err );
4123-
goto abort;
4106+
handleError( sql, errMsg, true );
4107+
return false;
41244108
}
41254109
}
41264110
sqlite3_finalize( stmt );
41274111

41284112
ret = sqlite3_exec( mSqliteHandle, "COMMIT", nullptr, nullptr, &errMsg );
41294113
if ( ret != SQLITE_OK )
41304114
{
4131-
// some error occurred
4132-
goto abort;
4115+
handleError( sql, errMsg, true );
4116+
return false;
41334117
}
41344118

41354119
return true;
4136-
4137-
abort:
4138-
pushError( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ) );
4139-
if ( errMsg )
4140-
{
4141-
sqlite3_free( errMsg );
4142-
}
4143-
4144-
if ( toCommit )
4145-
{
4146-
// ROLLBACK after some previous error
4147-
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
4148-
}
4149-
4150-
return false;
41514120
}
41524121

41534122
bool QgsSpatiaLiteProvider::addAttributes( const QList<QgsField> &attributes )
41544123
{
41554124
char *errMsg = nullptr;
4156-
bool toCommit = false;
41574125
QString sql;
41584126

41594127
if ( attributes.isEmpty() )
@@ -4162,10 +4130,9 @@ bool QgsSpatiaLiteProvider::addAttributes( const QList<QgsField> &attributes )
41624130
int ret = sqlite3_exec( mSqliteHandle, "BEGIN", nullptr, nullptr, &errMsg );
41634131
if ( ret != SQLITE_OK )
41644132
{
4165-
// some error occurred
4166-
goto abort;
4133+
handleError( sql, errMsg );
4134+
return false;
41674135
}
4168-
toCommit = true;
41694136

41704137
for ( QList<QgsField>::const_iterator iter = attributes.begin(); iter != attributes.end(); ++iter )
41714138
{
@@ -4176,16 +4143,16 @@ bool QgsSpatiaLiteProvider::addAttributes( const QList<QgsField> &attributes )
41764143
ret = sqlite3_exec( mSqliteHandle, sql.toUtf8().constData(), nullptr, nullptr, &errMsg );
41774144
if ( ret != SQLITE_OK )
41784145
{
4179-
// some error occurred
4180-
goto abort;
4146+
handleError( sql, errMsg, true );
4147+
return false;
41814148
}
41824149
}
41834150

41844151
ret = sqlite3_exec( mSqliteHandle, "COMMIT", nullptr, nullptr, &errMsg );
41854152
if ( ret != SQLITE_OK )
41864153
{
4187-
// some error occurred
4188-
goto abort;
4154+
handleError( sql, errMsg, true );
4155+
return false;
41894156
}
41904157
#ifdef SPATIALITE_VERSION_GE_4_0_0
41914158
sql = QStringLiteral( "UPDATE geometry_columns_statistics set last_verified = 0 WHERE f_table_name=\"%1\" AND f_geometry_column=\"%2\";" )
@@ -4202,27 +4169,11 @@ bool QgsSpatiaLiteProvider::addAttributes( const QList<QgsField> &attributes )
42024169
loadFields();
42034170

42044171
return true;
4205-
4206-
abort:
4207-
pushError( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ) );
4208-
if ( errMsg )
4209-
{
4210-
sqlite3_free( errMsg );
4211-
}
4212-
4213-
if ( toCommit )
4214-
{
4215-
// ROLLBACK after some previous error
4216-
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
4217-
}
4218-
4219-
return false;
42204172
}
42214173

42224174
bool QgsSpatiaLiteProvider::changeAttributeValues( const QgsChangedAttributesMap &attr_map )
42234175
{
42244176
char *errMsg = nullptr;
4225-
bool toCommit = false;
42264177
QString sql;
42274178

42284179
if ( attr_map.isEmpty() )
@@ -4231,10 +4182,9 @@ bool QgsSpatiaLiteProvider::changeAttributeValues( const QgsChangedAttributesMap
42314182
int ret = sqlite3_exec( mSqliteHandle, "BEGIN", nullptr, nullptr, &errMsg );
42324183
if ( ret != SQLITE_OK )
42334184
{
4234-
// some error occurred
4235-
goto abort;
4185+
handleError( sql, errMsg );
4186+
return false;
42364187
}
4237-
toCommit = true;
42384188

42394189
for ( QgsChangedAttributesMap::const_iterator iter = attr_map.begin(); iter != attr_map.end(); ++iter )
42404190
{
@@ -4300,50 +4250,33 @@ bool QgsSpatiaLiteProvider::changeAttributeValues( const QgsChangedAttributesMap
43004250
ret = sqlite3_exec( mSqliteHandle, sql.toUtf8().constData(), nullptr, nullptr, &errMsg );
43014251
if ( ret != SQLITE_OK )
43024252
{
4303-
// some error occurred
4304-
goto abort;
4253+
handleError( sql, errMsg, true );
4254+
return false;
43054255
}
43064256
}
43074257

43084258
ret = sqlite3_exec( mSqliteHandle, "COMMIT", nullptr, nullptr, &errMsg );
43094259
if ( ret != SQLITE_OK )
43104260
{
4311-
// some error occurred
4312-
goto abort;
4261+
handleError( sql, errMsg, true );
4262+
return false;
43134263
}
43144264

43154265
return true;
4316-
4317-
abort:
4318-
pushError( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ) );
4319-
if ( errMsg )
4320-
{
4321-
sqlite3_free( errMsg );
4322-
}
4323-
4324-
if ( toCommit )
4325-
{
4326-
// ROLLBACK after some previous error
4327-
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
4328-
}
4329-
4330-
return false;
43314266
}
43324267

43334268
bool QgsSpatiaLiteProvider::changeGeometryValues( const QgsGeometryMap &geometry_map )
43344269
{
43354270
sqlite3_stmt *stmt = nullptr;
43364271
char *errMsg = nullptr;
4337-
bool toCommit = false;
43384272
QString sql;
43394273

43404274
int ret = sqlite3_exec( mSqliteHandle, "BEGIN", nullptr, nullptr, &errMsg );
43414275
if ( ret != SQLITE_OK )
43424276
{
4343-
// some error occurred
4344-
goto abort;
4277+
handleError( sql, errMsg );
4278+
return false;
43454279
}
4346-
toCommit = true;
43474280

43484281
sql =
43494282
QStringLiteral( "UPDATE %1 SET %2=GeomFromWKB(?, %3) WHERE %4=?" )
@@ -4387,33 +4320,19 @@ bool QgsSpatiaLiteProvider::changeGeometryValues( const QgsGeometryMap &geometry
43874320
const char *err = sqlite3_errmsg( mSqliteHandle );
43884321
errMsg = ( char * ) sqlite3_malloc(( int ) strlen( err ) + 1 );
43894322
strcpy( errMsg, err );
4390-
goto abort;
4323+
handleError( sql, errMsg, true );
4324+
return false;
43914325
}
43924326
}
43934327
sqlite3_finalize( stmt );
43944328

43954329
ret = sqlite3_exec( mSqliteHandle, "COMMIT", nullptr, nullptr, &errMsg );
43964330
if ( ret != SQLITE_OK )
43974331
{
4398-
// some error occurred
4399-
goto abort;
4332+
handleError( sql, errMsg, true );
4333+
return false;
44004334
}
44014335
return true;
4402-
4403-
abort:
4404-
pushError( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ) );
4405-
if ( errMsg )
4406-
{
4407-
sqlite3_free( errMsg );
4408-
}
4409-
4410-
if ( toCommit )
4411-
{
4412-
// ROLLBACK after some previous error
4413-
( void )sqlite3_exec( mSqliteHandle, "ROLLBACK", nullptr, nullptr, nullptr );
4414-
}
4415-
4416-
return false;
44174336
}
44184337

44194338
QgsVectorDataProvider::Capabilities QgsSpatiaLiteProvider::capabilities() const
@@ -4762,7 +4681,9 @@ void QgsSpatiaLiteProvider::getViewSpatialIndexName()
47624681
quotedValue( mGeometryColumn ) );
47634682
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
47644683
if ( ret != SQLITE_OK )
4765-
goto error;
4684+
{
4685+
handleError( sql, errMsg );
4686+
}
47664687
if ( rows < 1 )
47674688
;
47684689
else
@@ -4775,15 +4696,6 @@ void QgsSpatiaLiteProvider::getViewSpatialIndexName()
47754696
}
47764697
}
47774698
sqlite3_free_table( results );
4778-
return;
4779-
4780-
error:
4781-
// unexpected error
4782-
if ( errMsg )
4783-
{
4784-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
4785-
sqlite3_free( errMsg );
4786-
}
47874699
}
47884700
#endif
47894701

@@ -4825,7 +4737,10 @@ bool QgsSpatiaLiteProvider::getTableGeometryDetails()
48254737

48264738
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
48274739
if ( ret != SQLITE_OK )
4828-
goto error;
4740+
{
4741+
handleError( sql, errMsg );
4742+
return false;
4743+
}
48294744
if ( rows < 1 )
48304745
;
48314746
else
@@ -4892,18 +4807,12 @@ bool QgsSpatiaLiteProvider::getTableGeometryDetails()
48924807
sqlite3_free_table( results );
48934808

48944809
if ( mGeomType == QgsWkbTypes::Unknown || mSrid < 0 )
4895-
goto error;
4896-
4897-
return getSridDetails();
4898-
4899-
error:
4900-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
4901-
// unexpected error
4902-
if ( errMsg )
49034810
{
4904-
sqlite3_free( errMsg );
4811+
handleError( sql, errMsg );
4812+
return false;
49054813
}
4906-
return false;
4814+
4815+
return getSridDetails();
49074816
}
49084817

49094818
bool QgsSpatiaLiteProvider::getViewGeometryDetails()
@@ -4923,7 +4832,10 @@ bool QgsSpatiaLiteProvider::getViewGeometryDetails()
49234832

49244833
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
49254834
if ( ret != SQLITE_OK )
4926-
goto error;
4835+
{
4836+
handleError( sql, errMsg );
4837+
return false;
4838+
}
49274839
if ( rows < 1 )
49284840
;
49294841
else
@@ -4975,18 +4887,12 @@ bool QgsSpatiaLiteProvider::getViewGeometryDetails()
49754887
sqlite3_free_table( results );
49764888

49774889
if ( mGeomType == QgsWkbTypes::Unknown || mSrid < 0 )
4978-
goto error;
4979-
4980-
return getSridDetails();
4981-
4982-
error:
4983-
// unexpected error
4984-
if ( errMsg )
49854890
{
4986-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
4987-
sqlite3_free( errMsg );
4891+
handleError( sql, errMsg );
4892+
return false;
49884893
}
4989-
return false;
4894+
4895+
return getSridDetails();
49904896
}
49914897

49924898
bool QgsSpatiaLiteProvider::getVShapeGeometryDetails()
@@ -5004,7 +4910,10 @@ bool QgsSpatiaLiteProvider::getVShapeGeometryDetails()
50044910

50054911
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
50064912
if ( ret != SQLITE_OK )
5007-
goto error;
4913+
{
4914+
handleError( sql, errMsg );
4915+
return false;
4916+
}
50084917
if ( rows < 1 )
50094918
;
50104919
else
@@ -5045,18 +4954,12 @@ bool QgsSpatiaLiteProvider::getVShapeGeometryDetails()
50454954
sqlite3_free_table( results );
50464955

50474956
if ( mGeomType == QgsWkbTypes::Unknown || mSrid < 0 )
5048-
goto error;
5049-
5050-
return getSridDetails();
5051-
5052-
error:
5053-
// unexpected error
5054-
if ( errMsg )
50554957
{
5056-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
5057-
sqlite3_free( errMsg );
4958+
handleError( sql, errMsg );
4959+
return false;
50584960
}
5059-
return false;
4961+
4962+
return getSridDetails();
50604963
}
50614964

50624965
bool QgsSpatiaLiteProvider::getQueryGeometryDetails()
@@ -5087,7 +4990,11 @@ bool QgsSpatiaLiteProvider::getQueryGeometryDetails()
50874990

50884991
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
50894992
if ( ret != SQLITE_OK )
5090-
goto error;
4993+
{
4994+
handleError( sql, errMsg );
4995+
return false;
4996+
}
4997+
50914998
if ( rows < 1 )
50924999
;
50935000
else
@@ -5120,7 +5027,11 @@ bool QgsSpatiaLiteProvider::getQueryGeometryDetails()
51205027

51215028
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
51225029
if ( ret != SQLITE_OK )
5123-
goto error;
5030+
{
5031+
handleError( sql, errMsg );
5032+
return false;
5033+
}
5034+
51245035
if ( rows != 1 )
51255036
;
51265037
else
@@ -5161,18 +5072,12 @@ bool QgsSpatiaLiteProvider::getQueryGeometryDetails()
51615072
}
51625073

51635074
if ( mGeomType == QgsWkbTypes::Unknown || mSrid < 0 )
5164-
goto error;
5165-
5166-
return getSridDetails();
5167-
5168-
error:
5169-
// unexpected error
5170-
if ( errMsg )
51715075
{
5172-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
5173-
sqlite3_free( errMsg );
5076+
handleError( sql, errMsg );
5077+
return false;
51745078
}
5175-
return false;
5079+
5080+
return getSridDetails();
51765081
}
51775082

51785083
bool QgsSpatiaLiteProvider::getSridDetails()
@@ -5188,7 +5093,10 @@ bool QgsSpatiaLiteProvider::getSridDetails()
51885093

51895094
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
51905095
if ( ret != SQLITE_OK )
5191-
goto error;
5096+
{
5097+
handleError( sql, errMsg );
5098+
return false;
5099+
}
51925100
if ( rows < 1 )
51935101
;
51945102
else
@@ -5202,15 +5110,6 @@ bool QgsSpatiaLiteProvider::getSridDetails()
52025110
sqlite3_free_table( results );
52035111

52045112
return true;
5205-
5206-
error:
5207-
// unexpected error
5208-
if ( errMsg )
5209-
{
5210-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
5211-
sqlite3_free( errMsg );
5212-
}
5213-
return false;
52145113
}
52155114

52165115
#ifdef SPATIALITE_VERSION_GE_4_0_0
@@ -5256,7 +5155,10 @@ bool QgsSpatiaLiteProvider::getTableSummary()
52565155

52575156
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
52585157
if ( ret != SQLITE_OK )
5259-
goto error;
5158+
{
5159+
handleError( sql, errMsg );
5160+
return false;
5161+
}
52605162
if ( rows < 1 )
52615163
;
52625164
else
@@ -5283,15 +5185,6 @@ bool QgsSpatiaLiteProvider::getTableSummary()
52835185
}
52845186
sqlite3_free_table( results );
52855187
return true;
5286-
5287-
error:
5288-
// unexpected error
5289-
if ( errMsg )
5290-
{
5291-
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql, errMsg ), tr( "SpatiaLite" ) );
5292-
sqlite3_free( errMsg );
5293-
}
5294-
return false;
52955188
}
52965189

52975190
QgsField QgsSpatiaLiteProvider::field( int index ) const

‎src/providers/spatialite/qgsspatialiteprovider.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,11 @@ class QgsSpatiaLiteProvider: public QgsVectorDataProvider
472472
GEOS_3D_GEOMETRYCOLLECTION = -2147483641,
473473
};
474474

475+
/**
476+
* Handles an error encountered while executing an sql statement.
477+
*/
478+
void handleError( const QString& sql, char* errorMessage, bool rollback = false );
479+
475480
friend class QgsSpatiaLiteFeatureSource;
476481

477482
};

0 commit comments

Comments
 (0)
Please sign in to comment.