Browse Source

ogr dbdriver: support OFTInteger64 (merge https://trac.osgeo.org/grass/changeset/70259 from trunk)

git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@70261 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 8 years ago
parent
commit
9f6ca6a54a
2 changed files with 7 additions and 3 deletions
  1. 5 1
      db/drivers/ogr/describe.c
  2. 2 2
      db/drivers/postgres/describe.c

+ 5 - 1
db/drivers/ogr/describe.c

@@ -106,7 +106,7 @@ int describe_table(OGRLayerH hLayer, dbTable **table, cursor *c)
 	ogrType = OGR_Fld_GetType(hFieldDefn);
 	fieldName = OGR_Fld_GetNameRef(hFieldDefn);
 
-	if (ogrType != OFTInteger && ogrType != OFTReal &&
+	if (ogrType != OFTInteger && ogrType != OFTInteger64 && ogrType != OFTReal &&
 	    ogrType != OFTString  && ogrType != OFTDate &&
 	    ogrType != OFTTime    && ogrType != OFTDateTime ) {
 	    G_warning(_("OGR driver: column '%s', OGR type %d is not supported"),
@@ -171,9 +171,13 @@ int describe_table(OGRLayerH hLayer, dbTable **table, cursor *c)
 
 	switch (ogrType) {
 	case OFTInteger:
+        case OFTInteger64:
 	    sqlType = DB_SQL_TYPE_INTEGER;
 	    size = OGR_Fld_GetWidth(hFieldDefn);	/* OK ? */
 	    precision = 0;
+            if (ogrType == OFTInteger64)
+                G_warning(_("Column '%s' : type int8 (bigint) is stored as integer (4 bytes) "
+                            "some data may be damaged"), fieldName);
 	    break;
 
 	case OFTReal:

+ 2 - 2
db/drivers/postgres/describe.c

@@ -127,11 +127,11 @@ int describe_table(PGresult * res, dbTable ** table, cursor * c)
 	}
 
 	if (gpgtype == PG_TYPE_INT8)
-	    G_warning(_("column '%s' : type int8 (bigint) is stored as integer (4 bytes) "
+	    G_warning(_("Column '%s' : type int8 (bigint) is stored as integer (4 bytes) "
 		       "some data may be damaged"), fname);
 
 	if (gpgtype == PG_TYPE_VARCHAR && fsize < 0) {
-	    G_warning(_("column '%s' : type character varying is stored as varchar(250) "
+	    G_warning(_("Column '%s' : type character varying is stored as varchar(250) "
 		       "some data may be lost"), fname);
 	    fsize = 250;
 	}