Skip to content

Commit 48f362e

Browse files
committed
Npgsql/Geo: Fix flaky GeoJsonTypesExample task
1 parent bc7434d commit 48f362e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

by-language/csharp-npgsql/DemoTypes.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public async Task CreateTable()
7676

7777
await using (var cmd = new NpgsqlCommand("""
7878
CREATE TABLE testdrive.example (
79+
id STRING,
7980
-- Numeric types
8081
null_integer INT,
8182
integer INT,
@@ -389,13 +390,15 @@ public async Task InsertGeoJsonString()
389390
/***
390391
* Communicate GeoJSON types as strings, marshall from/to GeoJSON types manually.
391392
*/
392-
Console.WriteLine("Running InsertGeoRaw");
393+
Console.WriteLine("Running InsertGeoJsonString");
393394

394395
// Insert single data point.
395396
await using (var cmd = new NpgsqlCommand("""
396397
INSERT INTO testdrive.example (
398+
"id",
397399
"geoshape"
398400
) VALUES (
401+
@id,
399402
@geoshape
400403
);
401404
""", conn))
@@ -412,11 +415,13 @@ INSERT INTO testdrive.example (
412415
]);
413416
// TODO: Can GEO_SHAPE types be directly marshalled to a .NET GeoJSON type?
414417
// Currently, `InsertGeoJsonTyped` does not work yet.
418+
cmd.Parameters.AddWithValue("id", "point");
415419
cmd.Parameters.AddWithValue("geoshape", NpgsqlDbType.Json, JsonConvert.SerializeObject(point));
416420
cmd.ExecuteNonQuery();
417421

418422
cmd.Parameters.Clear();
419423

424+
cmd.Parameters.AddWithValue("id", "polygon");
420425
cmd.Parameters.AddWithValue("geoshape", NpgsqlDbType.Json, JsonConvert.SerializeObject(poly));
421426
cmd.ExecuteNonQuery();
422427
}
@@ -436,14 +441,15 @@ INSERT INTO testdrive.example (
436441
await InsertGeoJsonString();
437442

438443
// Query back data.
439-
await using (var cmd = new NpgsqlCommand("SELECT * FROM testdrive.example", conn))
444+
await using (var cmd = new NpgsqlCommand("SELECT * FROM testdrive.example WHERE id='point'", conn))
440445
await using (var reader = cmd.ExecuteReader())
441446
{
442447
reader.Read();
443448
// TODO: Can GEO_SHAPE types be directly marshalled to a .NET GeoJSON type?
444449
// Currently, `InsertGeoJsonTyped` does not work yet.
445450
var obj = reader.GetFieldValue<JsonDocument>("geoshape");
446-
var geoJsonObject = JsonConvert.DeserializeObject<Point>(obj.RootElement.ToString());
451+
var payload = obj.RootElement.ToString();
452+
var geoJsonObject = JsonConvert.DeserializeObject<Point>(payload);
447453
return (Point?) geoJsonObject;
448454
}
449455
}

0 commit comments

Comments
 (0)