From 8ea35382db3436d54ab59bd30706705564b0985c Mon Sep 17 00:00:00 2001
From: Corey <coreyearleon@icloud.com>
Date: Tue, 22 Oct 2024 11:29:22 -0700
Subject: [PATCH] feat: Add support for PostGIS 3.5 (#9354)

---
 .github/workflows/ci.yml | 19 +++++++++++--------
 CONTRIBUTING.md          |  4 ++--
 README.md                | 10 +++++-----
 3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fb85de3c5f..fdabbb75fe 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -235,17 +235,20 @@ jobs:
           - name: PostgreSQL 13, PostGIS 3.4
             POSTGRES_IMAGE: postgis/postgis:13-3.4
             NODE_VERSION: 22.4.1
-          - name: PostgreSQL 14, PostGIS 3.4
-            POSTGRES_IMAGE: postgis/postgis:14-3.4
+          - name: PostgreSQL 13, PostGIS 3.5
+            POSTGRES_IMAGE: postgis/postgis:13-3.5
             NODE_VERSION: 22.4.1
-          - name: PostgreSQL 15, PostGIS 3.4
-            POSTGRES_IMAGE: postgis/postgis:15-3.4
+          - name: PostgreSQL 14, PostGIS 3.5
+            POSTGRES_IMAGE: postgis/postgis:14-3.5
             NODE_VERSION: 22.4.1
-          - name: PostgreSQL 16, PostGIS 3.4
-            POSTGRES_IMAGE: postgis/postgis:16-3.4
+          - name: PostgreSQL 15, PostGIS 3.5
+            POSTGRES_IMAGE: postgis/postgis:15-3.5
             NODE_VERSION: 22.4.1
-          - name: PostgreSQL 17, PostGIS 3.4
-            POSTGRES_IMAGE: postgis/postgis:17-3.4
+          - name: PostgreSQL 16, PostGIS 3.5
+            POSTGRES_IMAGE: postgis/postgis:16-3.5
+            NODE_VERSION: 22.4.1
+          - name: PostgreSQL 17, PostGIS 3.5
+            POSTGRES_IMAGE: postgis/postgis:17-3.5
             NODE_VERSION: 22.4.1
       fail-fast: false
     name: ${{ matrix.name }}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 991e21f867..b93134a84a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -272,7 +272,7 @@ If your pull request introduces a change that may affect the storage or retrieva
 [PostGIS images (select one with v2.2 or higher) on docker hub](https://hub.docker.com/r/postgis/postgis) is based off of the official [postgres](https://hub.docker.com/_/postgres) image and will work out-of-the-box (as long as you create a user with the necessary extensions for each of your Parse databases; see below). To launch the compatible Postgres instance, copy and paste the following line into your shell:
 
 ```
-docker run -d --name parse-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password --rm postgis/postgis:16-3.4-alpine && sleep 20 && docker exec -it parse-postgres psql -U postgres -c 'CREATE DATABASE parse_server_postgres_adapter_test_database;' && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION pgcrypto; CREATE EXTENSION postgis;' -d parse_server_postgres_adapter_test_database && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION postgis_topology;' -d parse_server_postgres_adapter_test_database
+docker run -d --name parse-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password --rm postgis/postgis:17-3.5-alpine && sleep 20 && docker exec -it parse-postgres psql -U postgres -c 'CREATE DATABASE parse_server_postgres_adapter_test_database;' && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION pgcrypto; CREATE EXTENSION postgis;' -d parse_server_postgres_adapter_test_database && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION postgis_topology;' -d parse_server_postgres_adapter_test_database
 ```
 To stop the Postgres instance:
 
@@ -280,7 +280,7 @@ To stop the Postgres instance:
 docker stop parse-postgres
 ```
 
-You can also use the [postgis/postgis:16-3.4-alpine](https://hub.docker.com/r/postgis/postgis) image in a Dockerfile and copy this [script](https://github.com/parse-community/parse-server/blob/master/scripts/before_script_postgres.sh) to the image by adding the following lines:
+You can also use the [postgis/postgis:17-3.5-alpine](https://hub.docker.com/r/postgis/postgis) image in a Dockerfile and copy this [script](https://github.com/parse-community/parse-server/blob/master/scripts/before_script_postgres.sh) to the image by adding the following lines:
 
 ```
 #Install additional scripts. These are run in abc order during initial start
diff --git a/README.md b/README.md
index 3e0c31730c..da5be58f50 100644
--- a/README.md
+++ b/README.md
@@ -152,11 +152,11 @@ Parse Server is continuously tested with the most recent releases of PostgreSQL
 
 | Version     | PostGIS Version    | End-of-Life   | Parse Server Support | Compatible |
 |-------------|--------------------|---------------|----------------------|------------|
-| Postgres 13 | 3.1, 3.2, 3.3, 3.4 | November 2025 | <= 6.x (2023)        | ✅ Yes      |
-| Postgres 14 | 3.4                | November 2026 | <= 7.x (2024)        | ✅ Yes      |
-| Postgres 15 | 3.4                | November 2027 | <= 8.x (2025)        | ✅ Yes      |
-| Postgres 16 | 3.4                | November 2028 | <= 9.x (2026)        | ✅ Yes      |
-| Postgres 17 | 3.4                | November 2029 | <= 9.x (2026)        | ✅ Yes      |
+| Postgres 13 | 3.1, 3.2, 3.3, 3.4, 3.5 | November 2025 | <= 6.x (2023)        | ✅ Yes      |
+| Postgres 14 | 3.5                | November 2026 | <= 7.x (2024)        | ✅ Yes      |
+| Postgres 15 | 3.5                | November 2027 | <= 8.x (2025)        | ✅ Yes      |
+| Postgres 16 | 3.5                | November 2028 | <= 9.x (2026)        | ✅ Yes      |
+| Postgres 17 | 3.5                | November 2029 | <= 9.x (2026)        | ✅ Yes      |
 
 ### Locally