[Git][debian-gis-team/pgsql-ogr-fdw][upstream] New upstream version 1.0.7

Bas Couwenberg gitlab at salsa.debian.org
Tue Sep 25 06:33:21 BST 2018


Bas Couwenberg pushed to branch upstream at Debian GIS Project / pgsql-ogr-fdw


Commits:
09cbc603 by Bas Couwenberg at 2018-09-25T05:09:30Z
New upstream version 1.0.7
- - - - -


3 changed files:

- ogr_fdw.c
- ogr_fdw.h
- ogr_fdw_deparse.c


Changes:

=====================================
ogr_fdw.c
=====================================
@@ -192,15 +192,6 @@ ogrErrorHandler(CPLErr eErrClass, int err_no, const char *msg)
 void
 _PG_init(void)
 {
-	Oid typoid = TypenameGetTypid("geometry");
-	if (OidIsValid(typoid) && get_typisdefined(typoid))
-	{
-		GEOMETRYOID = typoid;
-	}
-	else
-	{
-		GEOMETRYOID = BYTEAOID;
-	}
 
 	on_proc_exit(&ogr_fdw_exit, PointerGetDatum(NULL));
 
@@ -220,6 +211,25 @@ ogr_fdw_exit(int code, Datum arg)
 	OGRCleanupAll();
 }
 
+/*
+ * Function to get the geometry OID if required
+ */
+Oid ogrGetGeometryOid(void)
+{
+	if (GEOMETRYOID == InvalidOid) {
+		Oid typoid = TypenameGetTypid("geometry");
+		if (OidIsValid(typoid) && get_typisdefined(typoid))
+		{
+			GEOMETRYOID = typoid;
+		}
+		else
+		{
+			GEOMETRYOID = BYTEAOID;
+		}
+	}
+
+	return GEOMETRYOID;
+}
 
 /*
  * Foreign-data wrapper handler function: return a struct with pointers
@@ -1175,7 +1185,7 @@ ogrReadColumnData(OgrFdwState *state)
 
 		/* If the OGR source has geometries, can we match them to Pg columns? */
 		/* We'll match to the first ones we find, irrespective of name */
-		if ( geom_count < ogr_geom_count && col.pgtype == GEOMETRYOID )
+		if ( geom_count < ogr_geom_count && col.pgtype == ogrGetGeometryOid() )
 		{
 			col.ogrvariant = OGR_GEOMETRY;
 			col.ogrfldtype = OFTBinary;
@@ -1256,7 +1266,7 @@ ogrLookupGeometryFunctionOid(const char *proname)
 	FuncCandidateList clist;
 
 	/* This only works if PostGIS is installed */
-	if ( GEOMETRYOID == InvalidOid || GEOMETRYOID == BYTEAOID )
+	if ( ogrGetGeometryOid() == InvalidOid || ogrGetGeometryOid() == BYTEAOID )
 		return InvalidOid;
 
 	names = stringToQualifiedNameList(proname);
@@ -1272,7 +1282,7 @@ ogrLookupGeometryFunctionOid(const char *proname)
 			int i;
 			for ( i = 0; i < clist->nargs; i++ )
 			{
-				if ( clist->args[i] == GEOMETRYOID )
+				if ( clist->args[i] == ogrGetGeometryOid() )
 					return clist->oid;
 			}
 		}
@@ -1485,7 +1495,7 @@ ogrFeatureToSlot(const OGRFeatureH feat, TupleTableSlot *slot, const OgrFdwExecS
 				nulls[i] = false;
 				values[i] = PointerGetDatum(varlena);
 			}
-			else if ( pgtype == GEOMETRYOID )
+			else if ( pgtype == ogrGetGeometryOid() )
 			{
 				/*
 				 * For geometry we need to convert the varlena WKB data into a serialized
@@ -2619,7 +2629,7 @@ ogrImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid)
 			         quote_identifier(server->servername),
 			         launder_table_names,
 			         launder_column_names,
-			         GEOMETRYOID != BYTEAOID,
+			         ogrGetGeometryOid() != BYTEAOID,
 			         &buf
 			      );
 


=====================================
ogr_fdw.h
=====================================
@@ -183,8 +183,6 @@ typedef struct OgrFdwModifyState
 /* Shared function signatures */
 bool ogrDeparse(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, List *exprs, OgrFdwState *state, List **param);
 
-
-/* Shared global value of the Geometry OId */
-extern Oid GEOMETRYOID;
+Oid ogrGetGeometryOid(void);
 
 #endif /* _OGR_FDW_H */


=====================================
ogr_fdw_deparse.c
=====================================
@@ -68,7 +68,7 @@ ogrStringFromDatum(Datum datum, Oid type)
 	initStringInfo(&result);
 
 	/* Special handling to convert a geometry to a bbox needed here */
-	if ( type == GEOMETRYOID )
+	if ( type == ogrGetGeometryOid() )
 	{
 		elog(ERROR, "got a GEOMETRY!");
 		return NULL;
@@ -128,7 +128,7 @@ ogrDeparseConst(Const* constant, OgrDeparseCtx *context)
 		appendStringInfoString(context->buf, "NULL");
 	}
 	/* Use geometry as a spatial filter? */
-	else if ( constant->consttype == GEOMETRYOID )
+	else if ( constant->consttype == ogrGetGeometryOid() )
 	{
 		/*
 		 * For geometry we need to convert the gserialized constant into 
@@ -355,7 +355,7 @@ ogrDeparseOpExpr(OpExpr* node, OgrDeparseCtx *context)
 		// else
 		// 	return false;
 		
-		// if ( constant->consttype != GEOMETRYOID )
+		// if ( constant->consttype != ogrGetGeometryOid() )
 
 		ReleaseSysCache(tuple);
 
@@ -483,12 +483,12 @@ ogrDeparseNullTest(NullTest *node, OgrDeparseCtx *context)
 {
 	StringInfo buf = context->buf;
 
-    appendStringInfoChar(buf, '(');
-    ogrDeparseExpr(node->arg, context);
-    if (node->nulltesttype == IS_NULL)
-        appendStringInfoString(buf, " IS NULL)");
-    else
-        appendStringInfoString(buf, " IS NOT NULL)");
+	appendStringInfoChar(buf, '(');
+	ogrDeparseExpr(node->arg, context);
+	if (node->nulltesttype == IS_NULL)
+		appendStringInfoString(buf, " IS NULL)");
+	else
+		appendStringInfoString(buf, " IS NOT NULL)");
 
 	return true;
 }



View it on GitLab: https://salsa.debian.org/debian-gis-team/pgsql-ogr-fdw/commit/09cbc603d30c6fd83032a81de36178706b487b6b

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/pgsql-ogr-fdw/commit/09cbc603d30c6fd83032a81de36178706b487b6b
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20180925/55a58563/attachment-0001.html>


More information about the Pkg-grass-devel mailing list