Skip to content

Commit bfd3096

Browse files
dminornyalldawson
authored andcommittedSep 9, 2020
Use zero to represent not applicable precision
The documentation for QgsField states that zero should be used for an unset precision, but the database providers use -1 in some places for that purpose. Fixes #38360
1 parent 8abcf10 commit bfd3096

File tree

6 files changed

+38
-38
lines changed

6 files changed

+38
-38
lines changed
 

‎src/providers/db2/qgsdb2provider.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,22 +1646,22 @@ bool QgsDb2Provider::convertField( QgsField &field )
16461646

16471647
case QVariant::DateTime:
16481648
fieldType = QStringLiteral( "TIMESTAMP" );
1649-
fieldPrec = -1;
1649+
fieldPrec = 0;
16501650
break;
16511651

16521652
case QVariant::Date:
16531653
fieldType = QStringLiteral( "DATE" );
1654-
fieldPrec = -1;
1654+
fieldPrec = 0;
16551655
break;
16561656

16571657
case QVariant::Time:
16581658
fieldType = QStringLiteral( "TIME" );
1659-
fieldPrec = -1;
1659+
fieldPrec = 0;
16601660
break;
16611661

16621662
case QVariant::String:
16631663
fieldType = QStringLiteral( "VARCHAR" );
1664-
fieldPrec = -1;
1664+
fieldPrec = 0;
16651665
break;
16661666

16671667
case QVariant::Int:
@@ -1675,7 +1675,7 @@ bool QgsDb2Provider::convertField( QgsField &field )
16751675
{
16761676
fieldType = QStringLiteral( "DOUBLE" );
16771677
fieldSize = -1;
1678-
fieldPrec = -1;
1678+
fieldPrec = 0;
16791679
}
16801680
else
16811681
{

‎src/providers/mssql/qgsmssqlprovider.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1667,22 +1667,22 @@ bool QgsMssqlProvider::convertField( QgsField &field )
16671667

16681668
case QVariant::DateTime:
16691669
fieldType = QStringLiteral( "datetime" );
1670-
fieldPrec = -1;
1670+
fieldPrec = 0;
16711671
break;
16721672

16731673
case QVariant::Date:
16741674
fieldType = QStringLiteral( "date" );
1675-
fieldPrec = -1;
1675+
fieldPrec = 0;
16761676
break;
16771677

16781678
case QVariant::Time:
16791679
fieldType = QStringLiteral( "time" );
1680-
fieldPrec = -1;
1680+
fieldPrec = 0;
16811681
break;
16821682

16831683
case QVariant::String:
16841684
fieldType = QStringLiteral( "nvarchar(max)" );
1685-
fieldPrec = -1;
1685+
fieldPrec = 0;
16861686
break;
16871687

16881688
case QVariant::Int:
@@ -1696,7 +1696,7 @@ bool QgsMssqlProvider::convertField( QgsField &field )
16961696
{
16971697
fieldType = QStringLiteral( "float" );
16981698
fieldSize = -1;
1699-
fieldPrec = -1;
1699+
fieldPrec = 0;
17001700
}
17011701
else
17021702
{

‎src/providers/oracle/qgsoracleprovider.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,19 +2840,19 @@ bool QgsOracleProvider::convertField( QgsField &field )
28402840

28412841
case QVariant::DateTime:
28422842
fieldType = "TIMESTAMP";
2843-
fieldPrec = -1;
2843+
fieldPrec = 0;
28442844
break;
28452845

28462846

28472847
case QVariant::Time:
28482848
case QVariant::String:
28492849
fieldType = "VARCHAR2(2047)";
2850-
fieldPrec = -1;
2850+
fieldPrec = 0;
28512851
break;
28522852

28532853
case QVariant::Date:
28542854
fieldType = "DATE";
2855-
fieldPrec = -1;
2855+
fieldPrec = 0;
28562856
break;
28572857

28582858
case QVariant::Int:
@@ -2866,7 +2866,7 @@ bool QgsOracleProvider::convertField( QgsField &field )
28662866
{
28672867
fieldType = "BINARY_DOUBLE";
28682868
fieldSize = -1;
2869-
fieldPrec = -1;
2869+
fieldPrec = 0;
28702870
}
28712871
else
28722872
{

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ bool QgsPostgresProvider::loadFields()
935935

936936
Oid fldtyp = result.PQftype( i );
937937
int fldMod = result.PQfmod( i );
938-
int fieldPrec = -1;
938+
int fieldPrec = 0;
939939
Oid tableoid = result.PQftable( i );
940940
int attnum = result.PQftablecol( i );
941941
Oid atttypid = attTypeIdMap[tableoid][attnum];
@@ -990,7 +990,7 @@ bool QgsPostgresProvider::loadFields()
990990
{
991991
fieldType = QVariant::Double;
992992
fieldSize = -1;
993-
fieldPrec = -1;
993+
fieldPrec = 0;
994994
}
995995
else if ( fieldTypeName == QLatin1String( "numeric" ) )
996996
{
@@ -999,7 +999,7 @@ bool QgsPostgresProvider::loadFields()
999999
if ( formattedFieldType == QLatin1String( "numeric" ) || formattedFieldType.isEmpty() )
10001000
{
10011001
fieldSize = -1;
1002-
fieldPrec = -1;
1002+
fieldPrec = 0;
10031003
}
10041004
else
10051005
{
@@ -1016,7 +1016,7 @@ bool QgsPostgresProvider::loadFields()
10161016
fieldName ),
10171017
tr( "PostGIS" ) );
10181018
fieldSize = -1;
1019-
fieldPrec = -1;
1019+
fieldPrec = 0;
10201020
}
10211021
}
10221022
}
@@ -1086,7 +1086,7 @@ bool QgsPostgresProvider::loadFields()
10861086
.arg( formattedFieldType,
10871087
fieldName ) );
10881088
fieldSize = -1;
1089-
fieldPrec = -1;
1089+
fieldPrec = 0;
10901090
}
10911091
}
10921092
else if ( fieldTypeName == QLatin1String( "char" ) )
@@ -1104,7 +1104,7 @@ bool QgsPostgresProvider::loadFields()
11041104
.arg( formattedFieldType,
11051105
fieldName ) );
11061106
fieldSize = -1;
1107-
fieldPrec = -1;
1107+
fieldPrec = 0;
11081108
}
11091109
}
11101110
else if ( fieldTypeName == QLatin1String( "hstore" ) || fieldTypeName == QLatin1String( "json" ) || fieldTypeName == QLatin1String( "jsonb" ) )
@@ -2752,7 +2752,7 @@ bool QgsPostgresProvider::addAttributes( const QList<QgsField> &attributes )
27522752
}
27532753
else if ( type == QLatin1String( "numeric" ) || type == QLatin1String( "decimal" ) )
27542754
{
2755-
if ( iter->length() > 0 && iter->precision() >= 0 )
2755+
if ( iter->length() > 0 && iter->precision() > 0 )
27562756
type = QStringLiteral( "%1(%2,%3)" ).arg( type ).arg( iter->length() ).arg( iter->precision() );
27572757
}
27582758
sql.append( QStringLiteral( "%1ADD COLUMN %2 %3" ).arg( delim, quotedIdentifier( iter->name() ), type ) );
@@ -4097,7 +4097,7 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
40974097

40984098
case QVariant::String:
40994099
fieldType = stringFieldType;
4100-
fieldPrec = -1;
4100+
fieldPrec = 0;
41014101
break;
41024102

41034103
case QVariant::Int:
@@ -4114,20 +4114,20 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
41144114
fieldType = field.typeName();
41154115
if ( fieldType.isEmpty() )
41164116
fieldType = QStringLiteral( "hstore" );
4117-
fieldPrec = -1;
4117+
fieldPrec = 0;
41184118
break;
41194119

41204120
case QVariant::StringList:
41214121
fieldType = QStringLiteral( "_text" );
4122-
fieldPrec = -1;
4122+
fieldPrec = 0;
41234123
break;
41244124

41254125
case QVariant::List:
41264126
{
41274127
QgsField sub( QString(), field.subType(), QString(), fieldSize, fieldPrec );
41284128
if ( !convertField( sub, nullptr ) ) return false;
41294129
fieldType = "_" + sub.typeName();
4130-
fieldPrec = -1;
4130+
fieldPrec = 0;
41314131
break;
41324132
}
41334133

@@ -4141,18 +4141,18 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
41414141
{
41424142
fieldType = QStringLiteral( "float8" );
41434143
}
4144-
fieldPrec = -1;
4144+
fieldPrec = 0;
41454145
break;
41464146

41474147
case QVariant::Bool:
41484148
fieldType = QStringLiteral( "bool" );
4149-
fieldPrec = -1;
4150-
fieldSize = -1;
4149+
fieldPrec = 0;
4150+
fieldSize = 0;
41514151
break;
41524152

41534153
case QVariant::ByteArray:
41544154
fieldType = QStringLiteral( "bytea" );
4155-
fieldPrec = -1;
4155+
fieldPrec = 0;
41564156
break;
41574157

41584158
default:

‎src/providers/postgres/raster/qgspostgresrasterprovider.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1583,7 +1583,7 @@ bool QgsPostgresRasterProvider::loadFields()
15831583

15841584
Oid fldtyp = result.PQftype( i );
15851585
int fldMod = result.PQfmod( i );
1586-
int fieldPrec = -1;
1586+
int fieldPrec = 0;
15871587
Oid tableoid = result.PQftable( i );
15881588
int attnum = result.PQftablecol( i );
15891589
Oid atttypid = attTypeIdMap[tableoid][attnum];
@@ -1638,7 +1638,7 @@ bool QgsPostgresRasterProvider::loadFields()
16381638
{
16391639
fieldType = QVariant::Double;
16401640
fieldSize = -1;
1641-
fieldPrec = -1;
1641+
fieldPrec = 0;
16421642
}
16431643
else if ( fieldTypeName == QLatin1String( "numeric" ) )
16441644
{
@@ -1647,7 +1647,7 @@ bool QgsPostgresRasterProvider::loadFields()
16471647
if ( formattedFieldType == QLatin1String( "numeric" ) || formattedFieldType.isEmpty() )
16481648
{
16491649
fieldSize = -1;
1650-
fieldPrec = -1;
1650+
fieldPrec = 0;
16511651
}
16521652
else
16531653
{
@@ -1664,7 +1664,7 @@ bool QgsPostgresRasterProvider::loadFields()
16641664
fieldName ),
16651665
tr( "PostGIS" ) );
16661666
fieldSize = -1;
1667-
fieldPrec = -1;
1667+
fieldPrec = 0;
16681668
}
16691669
}
16701670
}
@@ -1734,7 +1734,7 @@ bool QgsPostgresRasterProvider::loadFields()
17341734
.arg( formattedFieldType,
17351735
fieldName ) );
17361736
fieldSize = -1;
1737-
fieldPrec = -1;
1737+
fieldPrec = 0;
17381738
}
17391739
}
17401740
else if ( fieldTypeName == QLatin1String( "char" ) )
@@ -1752,7 +1752,7 @@ bool QgsPostgresRasterProvider::loadFields()
17521752
.arg( formattedFieldType,
17531753
fieldName ) );
17541754
fieldSize = -1;
1755-
fieldPrec = -1;
1755+
fieldPrec = 0;
17561756
}
17571757
}
17581758
else if ( fieldTypeName == QLatin1String( "hstore" ) || fieldTypeName == QLatin1String( "json" ) || fieldTypeName == QLatin1String( "jsonb" ) )

‎src/providers/spatialite/qgsspatialiteprovider.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ bool QgsSpatiaLiteProvider::convertField( QgsField &field )
7979
case QVariant::Time:
8080
case QVariant::String:
8181
fieldType = QStringLiteral( "TEXT" );
82-
fieldPrec = -1;
82+
fieldPrec = 0;
8383
break;
8484

8585
case QVariant::Int:
@@ -93,7 +93,7 @@ bool QgsSpatiaLiteProvider::convertField( QgsField &field )
9393
{
9494
fieldType = QStringLiteral( "REAL" );
9595
fieldSize = -1;
96-
fieldPrec = -1;
96+
fieldPrec = 0;
9797
}
9898
else
9999
{
@@ -117,7 +117,7 @@ bool QgsSpatiaLiteProvider::convertField( QgsField &field )
117117
case QVariant::ByteArray:
118118
fieldType = QStringLiteral( "BLOB" );
119119
fieldSize = -1;
120-
fieldPrec = -1;
120+
fieldPrec = 0;
121121
break;
122122

123123
default:

0 commit comments

Comments
 (0)
Please sign in to comment.