Skip to content

Commit f35fb37

Browse files
author
jef
committedNov 17, 2007
quote identifiers and ignore bytea columns, fix for #741
git-svn-id: http://svn.osgeo.org/qgis/trunk@7443 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent c6c8128 commit f35fb37

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed
 

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ QgsPostgresProvider::QgsPostgresProvider(QString const & uri)
169169
// The queries inside this loop could possibly be combined into one
170170
// single query - this would make the code run faster.
171171

172-
for (int i = 0; i < PQnfields(result); i++)
172+
for (int i=0; i < PQnfields(result); i++)
173173
{
174174
QString fieldName = PQfname(result, i);
175175
int fldtyp = PQftype(result, i);
@@ -199,19 +199,23 @@ QgsPostgresProvider::QgsPostgresProvider(QString const & uri)
199199
fieldComment = PQgetvalue(tresult, 0, 0);
200200
PQclear(tresult);
201201

202-
QgsDebugMsg("Field: " + attnum + " maps to " + QString::number(i) + " " + fieldName + ", "
202+
QgsDebugMsg("Field: " + attnum + " maps to " + QString::number( i ) + " " + fieldName + ", "
203203
+ fieldTypeName + " (" + QString::number(fldtyp) + "), " + fieldSize + ", " + QString::number(fieldModifier));
204-
204+
205205
if(fieldName!=geometryColumn)
206206
{
207+
207208
QVariant::Type fieldType;
208209
if (fieldTypeName.find("int") != -1 || fieldTypeName.find("serial") != -1)
209210
fieldType = QVariant::Int;
210211
else if (fieldTypeName == "real" || fieldTypeName == "double precision" || \
211-
fieldTypeName.find("float") != -1)
212+
fieldTypeName.find("float") != -1)
212213
fieldType = QVariant::Double;
213-
else
214+
else if (fieldTypeName != "bytea" )
214215
fieldType = QVariant::String;
216+
else
217+
continue;
218+
215219
attributeFields.insert(i, QgsField(fieldName, fieldType, fieldTypeName, fieldSize.toInt(), fieldModifier, fieldComment));
216220
}
217221
}
@@ -541,7 +545,7 @@ void QgsPostgresProvider::select(QgsAttributeList fetchAttributes,
541545
{
542546
if( (*it) != primaryKey) //no need to fetch primary key again
543547
{
544-
declare += "," + *it + "::text";
548+
declare += ",\"" + *it + "\"::text";
545549
}
546550
}
547551

@@ -635,7 +639,7 @@ bool QgsPostgresProvider::getFeatureAtId(int featureId,
635639
{
636640
if( (*namesIt) != primaryKey) //no need to fetch primary key again
637641
{
638-
sql += "," + *namesIt + "::text";
642+
sql += ",\"" + *namesIt + "\"::text";
639643
}
640644
}
641645

0 commit comments

Comments
 (0)
Please sign in to comment.