@@ -64,7 +64,7 @@ const QString POSTGRES_DESCRIPTION = "PostgreSQL/PostGIS data provider";
64
64
65
65
66
66
QgsPostgresProvider::QgsPostgresProvider (QString const & uri)
67
- : QgsVectorDataProvider(uri)
67
+ : QgsVectorDataProvider(uri), geomType(QGis::WKBUnknown )
68
68
{
69
69
// assume this is a valid layer until we determine otherwise
70
70
valid = true ;
@@ -345,6 +345,10 @@ QgsPostgresProvider::QgsPostgresProvider(QString const & uri)
345
345
{
346
346
valid = false ;
347
347
}
348
+
349
+ // Close the database connection if the layer isn't going to be loaded.
350
+ if (!valid)
351
+ PQfinish (connection);
348
352
}
349
353
350
354
QgsPostgresProvider::~QgsPostgresProvider ()
@@ -2500,8 +2504,7 @@ bool QgsPostgresProvider::getGeometryDetails()
2500
2504
showMessageBox (tr (" Unknown geometry type" ),
2501
2505
tr (" Column " ) + geometryColumn + tr (" in " ) +
2502
2506
mSchemaTableName + tr (" has a geometry type of " ) +
2503
- QString::number (geomType) +
2504
- tr (" , which Qgis does not currently support." ));
2507
+ fType + tr (" , which Qgis does not currently support." ));
2505
2508
valid = false ;
2506
2509
}
2507
2510
}
@@ -2515,11 +2518,15 @@ bool QgsPostgresProvider::getGeometryDetails()
2515
2518
}
2516
2519
2517
2520
#ifdef QGISDEBUG
2518
- std::cout << " SRID is " << srid.toLocal8Bit ().data () << ' \n '
2519
- << " type is " << fType .toLocal8Bit ().data () << ' \n '
2520
- << " Feature type is " << geomType << ' \n '
2521
- << " Feature type name is "
2522
- << QGis::qgisFeatureTypes[geomType] << std::endl;
2521
+ if (valid)
2522
+ std::cout << " SRID is " << srid.toLocal8Bit ().data () << ' \n '
2523
+ << " type is " << fType .toLocal8Bit ().data () << ' \n '
2524
+ << " Feature type is " << geomType << ' \n '
2525
+ << " Feature type name is "
2526
+ << QGis::qgisFeatureTypes[geomType] << std::endl;
2527
+ else
2528
+ std::cout << " Failed to get geometry details for Postgres layer."
2529
+ << std::endl;
2523
2530
#endif
2524
2531
2525
2532
return valid;
@@ -2532,7 +2539,7 @@ PGresult* QgsPostgresProvider::executeDbCommand(PGconn* connection,
2532
2539
#ifdef QGISDEBUG
2533
2540
std::cout << " Executed SQL: " << sql.local8Bit ().data () << ' \n ' ;
2534
2541
if (PQresultStatus (result) == PGRES_TUPLES_OK)
2535
- std::cout << " Command was successful." ;
2542
+ std::cout << " Command was successful.\n " ;
2536
2543
else
2537
2544
std::cout << " Command was unsuccessful. The error message was: "
2538
2545
<< PQresultErrorMessage (result) << " .\n " ;
0 commit comments