|
@@ -1087,11 +1087,24 @@ int main(int argc, char *argv[])
|
|
|
/** OFTDate = 9 **/
|
|
|
/** OFTTime = 10 **/
|
|
|
/** OFTDateTime = 11 **/
|
|
|
+ /** Simple 64bit integer OFTInteger64 = 12 **/
|
|
|
+ /** List of 64bit integers OFTInteger64List = 13 **/
|
|
|
|
|
|
if (Ogr_ftype == OFTInteger) {
|
|
|
sprintf(buf, ", %s integer", Ogr_fieldname);
|
|
|
}
|
|
|
- else if (Ogr_ftype == OFTIntegerList) {
|
|
|
+ else if (Ogr_ftype == OFTInteger64) {
|
|
|
+ if (strcmp(Fi->driver, "pg") == 0)
|
|
|
+ sprintf(buf, ", %s bigint", Ogr_fieldname);
|
|
|
+ else {
|
|
|
+ sprintf(buf, ", %s integer", Ogr_fieldname);
|
|
|
+ if (strcmp(Fi->driver, "sqlite") != 0)
|
|
|
+ G_warning(_("Writing column <%s> with integer 64 as integer 32"),
|
|
|
+ Ogr_fieldname);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (Ogr_ftype == OFTIntegerList ||
|
|
|
+ Ogr_ftype == OFTInteger64List) {
|
|
|
/* hack: treat as string */
|
|
|
sprintf(buf, ", %s varchar ( %d )", Ogr_fieldname,
|
|
|
OFTIntegerListlength);
|
|
@@ -1134,8 +1147,8 @@ int main(int argc, char *argv[])
|
|
|
Ogr_fieldname, OFTIntegerListlength);
|
|
|
}
|
|
|
else {
|
|
|
- G_warning(_("Column type not supported (%s)"),
|
|
|
- Ogr_fieldname);
|
|
|
+ G_warning(_("Column type (Ogr_ftype: %d) not supported (Ogr_fieldname: %s)"),
|
|
|
+ Ogr_ftype, Ogr_fieldname);
|
|
|
buf[0] = 0;
|
|
|
}
|
|
|
db_append_string(&sql, buf);
|
|
@@ -1219,7 +1232,9 @@ int main(int argc, char *argv[])
|
|
|
Ogr_field = OGR_FD_GetFieldDefn(Ogr_featuredefn, i);
|
|
|
Ogr_ftype = OGR_Fld_GetType(Ogr_field);
|
|
|
if (OGR_F_IsFieldSet(Ogr_feature, i)) {
|
|
|
- if (Ogr_ftype == OFTInteger || Ogr_ftype == OFTReal) {
|
|
|
+ if (Ogr_ftype == OFTInteger ||
|
|
|
+ Ogr_ftype == OFTInteger64 ||
|
|
|
+ Ogr_ftype == OFTReal) {
|
|
|
sprintf(buf, ", %s",
|
|
|
OGR_F_GetFieldAsString(Ogr_feature, i));
|
|
|
}
|
|
@@ -1240,7 +1255,8 @@ int main(int argc, char *argv[])
|
|
|
#endif
|
|
|
else if (Ogr_ftype == OFTString ||
|
|
|
Ogr_ftype == OFTStringList ||
|
|
|
- Ogr_ftype == OFTIntegerList) {
|
|
|
+ Ogr_ftype == OFTIntegerList ||
|
|
|
+ Ogr_ftype == OFTInteger64List) {
|
|
|
db_set_string(&strval, (char *)
|
|
|
OGR_F_GetFieldAsString(Ogr_feature,
|
|
|
i));
|
|
@@ -1266,7 +1282,8 @@ int main(int argc, char *argv[])
|
|
|
#endif
|
|
|
else if (Ogr_ftype == OFTString ||
|
|
|
Ogr_ftype == OFTStringList ||
|
|
|
- Ogr_ftype == OFTIntegerList) {
|
|
|
+ Ogr_ftype == OFTIntegerList ||
|
|
|
+ Ogr_ftype == OFTInteger64List) {
|
|
|
sprintf(buf, ", ''");
|
|
|
}
|
|
|
else {
|