Skip to content

Commit 23f72c8

Browse files
authored
update pg in docker to 3.3.3 (#184)
* update pg in docker to 3.3.3 * stage version change to 0.7.9
1 parent 29a94e1 commit 23f72c8

6 files changed

Lines changed: 4279 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/)
55
and this project adheres to [Semantic Versioning](http://semver.org/).
66

7+
## [v0.7.9]
8+
9+
### Fixed
10+
- Update docker image to use postgis 3.3.3
11+
712
## [v0.7.8]
813

914
### Fixed

Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
FROM postgres:15-bullseye as pg
22
ENV PGSTACDOCKER=1
33
ENV POSTGIS_MAJOR 3
4-
ENV POSTGIS_VERSION 3.3.2+dfsg-1.pgdg110+1
4+
ENV POSTGIS_VERSION 3.3.3+dfsg-1~exp1.pgdg110+1
55
ENV PYTHONPATH=/opt/src/pypgstac:/opt/python:${PYTHONPATH}
66
ENV PATH=/opt/bin:${PATH}
77
ENV PYTHONWRITEBYTECODE=1
88
ENV PYTHONBUFFERED=1
99

10+
RUN apt-get update \
11+
&& apt-get upgrade -y \
12+
&& apt-cache showpkg postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR
13+
1014
RUN set -ex \
11-
&& apt-get update \
1215
&& apt-get install -y --no-install-recommends \
1316
ca-certificates \
1417
python3 python-is-python3 python3-pip \
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
RESET ROLE;
2+
DO $$
3+
DECLARE
4+
BEGIN
5+
IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname='postgis') THEN
6+
CREATE EXTENSION IF NOT EXISTS postgis;
7+
END IF;
8+
IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname='btree_gist') THEN
9+
CREATE EXTENSION IF NOT EXISTS btree_gist;
10+
END IF;
11+
END;
12+
$$ LANGUAGE PLPGSQL;
13+
14+
DO $$
15+
BEGIN
16+
CREATE ROLE pgstac_admin;
17+
EXCEPTION WHEN duplicate_object THEN
18+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
19+
END
20+
$$;
21+
22+
DO $$
23+
BEGIN
24+
CREATE ROLE pgstac_read;
25+
EXCEPTION WHEN duplicate_object THEN
26+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
27+
END
28+
$$;
29+
30+
DO $$
31+
BEGIN
32+
CREATE ROLE pgstac_ingest;
33+
EXCEPTION WHEN duplicate_object THEN
34+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
35+
END
36+
$$;
37+
38+
39+
GRANT pgstac_admin TO current_user;
40+
41+
-- Function to make sure pgstac_admin is the owner of items
42+
CREATE OR REPLACE FUNCTION pgstac_admin_owns() RETURNS VOID AS $$
43+
DECLARE
44+
f RECORD;
45+
BEGIN
46+
FOR f IN (
47+
SELECT
48+
concat(
49+
oid::regproc::text,
50+
'(',
51+
coalesce(pg_get_function_identity_arguments(oid),''),
52+
')'
53+
) AS name,
54+
CASE prokind WHEN 'f' THEN 'FUNCTION' WHEN 'p' THEN 'PROCEDURE' WHEN 'a' THEN 'AGGREGATE' END as typ
55+
FROM pg_proc
56+
WHERE
57+
pronamespace=to_regnamespace('pgstac')
58+
AND proowner != to_regrole('pgstac_admin')
59+
AND proname NOT LIKE 'pg_stat%'
60+
)
61+
LOOP
62+
BEGIN
63+
EXECUTE format('ALTER %s %s OWNER TO pgstac_admin;', f.typ, f.name);
64+
EXCEPTION WHEN others THEN
65+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
66+
END;
67+
END LOOP;
68+
FOR f IN (
69+
SELECT
70+
oid::regclass::text as name,
71+
CASE relkind
72+
WHEN 'i' THEN 'INDEX'
73+
WHEN 'I' THEN 'INDEX'
74+
WHEN 'p' THEN 'TABLE'
75+
WHEN 'r' THEN 'TABLE'
76+
WHEN 'v' THEN 'VIEW'
77+
WHEN 'S' THEN 'SEQUENCE'
78+
ELSE NULL
79+
END as typ
80+
FROM pg_class
81+
WHERE relnamespace=to_regnamespace('pgstac') and relowner != to_regrole('pgstac_admin') AND relkind IN ('r','p','v','S') AND relname NOT LIKE 'pg_stat'
82+
)
83+
LOOP
84+
BEGIN
85+
EXECUTE format('ALTER %s %s OWNER TO pgstac_admin;', f.typ, f.name);
86+
EXCEPTION WHEN others THEN
87+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
88+
END;
89+
END LOOP;
90+
RETURN;
91+
END;
92+
$$ LANGUAGE PLPGSQL;
93+
SELECT pgstac_admin_owns();
94+
95+
CREATE SCHEMA IF NOT EXISTS pgstac AUTHORIZATION pgstac_admin;
96+
97+
GRANT ALL ON ALL FUNCTIONS IN SCHEMA pgstac to pgstac_admin;
98+
GRANT ALL ON ALL TABLES IN SCHEMA pgstac to pgstac_admin;
99+
GRANT ALL ON ALL SEQUENCES IN SCHEMA pgstac to pgstac_admin;
100+
101+
ALTER ROLE pgstac_admin SET SEARCH_PATH TO pgstac, public;
102+
ALTER ROLE pgstac_read SET SEARCH_PATH TO pgstac, public;
103+
ALTER ROLE pgstac_ingest SET SEARCH_PATH TO pgstac, public;
104+
105+
GRANT USAGE ON SCHEMA pgstac to pgstac_read;
106+
ALTER DEFAULT PRIVILEGES IN SCHEMA pgstac GRANT SELECT ON TABLES TO pgstac_read;
107+
ALTER DEFAULT PRIVILEGES IN SCHEMA pgstac GRANT USAGE ON TYPES TO pgstac_read;
108+
ALTER DEFAULT PRIVILEGES IN SCHEMA pgstac GRANT ALL ON SEQUENCES TO pgstac_read;
109+
110+
GRANT pgstac_read TO pgstac_ingest;
111+
GRANT ALL ON SCHEMA pgstac TO pgstac_ingest;
112+
ALTER DEFAULT PRIVILEGES IN SCHEMA pgstac GRANT ALL ON TABLES TO pgstac_ingest;
113+
ALTER DEFAULT PRIVILEGES IN SCHEMA pgstac GRANT ALL ON FUNCTIONS TO pgstac_ingest;
114+
115+
SET ROLE pgstac_admin;
116+
117+
SET SEARCH_PATH TO pgstac, public;
118+
119+
DO $$
120+
BEGIN
121+
DROP FUNCTION IF EXISTS analyze_items;
122+
EXCEPTION WHEN others THEN
123+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
124+
END
125+
$$;
126+
DO $$
127+
BEGIN
128+
DROP FUNCTION IF EXISTS validate_constraints;
129+
EXCEPTION WHEN others THEN
130+
RAISE NOTICE '%, skipping', SQLERRM USING ERRCODE = SQLSTATE;
131+
END
132+
$$;
133+
SET client_min_messages TO WARNING;
134+
SET SEARCH_PATH to pgstac, public;
135+
-- BEGIN migra calculated SQL
136+
-- END migra calculated SQL
137+
DO $$
138+
BEGIN
139+
INSERT INTO queryables (name, definition, property_wrapper, property_index_type) VALUES
140+
('id', '{"title": "Item ID","description": "Item identifier","$ref": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id"}', null, null);
141+
EXCEPTION WHEN unique_violation THEN
142+
RAISE NOTICE '%', SQLERRM USING ERRCODE = SQLSTATE;
143+
END
144+
$$;
145+
146+
DO $$
147+
BEGIN
148+
INSERT INTO queryables (name, definition, property_wrapper, property_index_type) VALUES
149+
('geometry', '{"title": "Item Geometry","description": "Item Geometry","$ref": "https://geojson.org/schema/Feature.json"}', null, null);
150+
EXCEPTION WHEN unique_violation THEN
151+
RAISE NOTICE '%', SQLERRM USING ERRCODE = SQLSTATE;
152+
END
153+
$$;
154+
155+
DO $$
156+
BEGIN
157+
INSERT INTO queryables (name, definition, property_wrapper, property_index_type) VALUES
158+
('datetime','{"description": "Datetime","type": "string","title": "Acquired","format": "date-time","pattern": "(\\+00:00|Z)$"}', null, null);
159+
EXCEPTION WHEN unique_violation THEN
160+
RAISE NOTICE '%', SQLERRM USING ERRCODE = SQLSTATE;
161+
END
162+
$$;
163+
164+
DO $$
165+
BEGIN
166+
INSERT INTO queryables (name, definition, property_wrapper, property_index_type) VALUES
167+
('eo:cloud_cover','{"$ref": "https://stac-extensions.github.io/eo/v1.0.0/schema.json#/definitions/fieldsproperties/eo:cloud_cover"}','to_int','BTREE');
168+
EXCEPTION WHEN unique_violation THEN
169+
RAISE NOTICE '%', SQLERRM USING ERRCODE = SQLSTATE;
170+
END
171+
$$;
172+
173+
DELETE FROM queryables a USING queryables b
174+
WHERE a.name = b.name AND a.collection_ids IS NOT DISTINCT FROM b.collection_ids AND a.id > b.id;
175+
176+
177+
INSERT INTO pgstac_settings (name, value) VALUES
178+
('context', 'off'),
179+
('context_estimated_count', '100000'),
180+
('context_estimated_cost', '100000'),
181+
('context_stats_ttl', '1 day'),
182+
('default_filter_lang', 'cql2-json'),
183+
('additional_properties', 'true'),
184+
('use_queue', 'false'),
185+
('queue_timeout', '10 minutes'),
186+
('update_collection_extent', 'false'),
187+
('format_cache', 'false')
188+
ON CONFLICT DO NOTHING
189+
;
190+
191+
ALTER FUNCTION to_text COST 5000;
192+
ALTER FUNCTION to_float COST 5000;
193+
ALTER FUNCTION to_int COST 5000;
194+
ALTER FUNCTION to_tstz COST 5000;
195+
ALTER FUNCTION to_text_array COST 5000;
196+
197+
198+
GRANT USAGE ON SCHEMA pgstac to pgstac_read;
199+
GRANT ALL ON SCHEMA pgstac to pgstac_ingest;
200+
GRANT ALL ON SCHEMA pgstac to pgstac_admin;
201+
202+
-- pgstac_read role limited to using function apis
203+
GRANT EXECUTE ON FUNCTION search TO pgstac_read;
204+
GRANT EXECUTE ON FUNCTION search_query TO pgstac_read;
205+
GRANT EXECUTE ON FUNCTION item_by_id TO pgstac_read;
206+
GRANT EXECUTE ON FUNCTION get_item TO pgstac_read;
207+
GRANT SELECT ON ALL TABLES IN SCHEMA pgstac TO pgstac_read;
208+
209+
210+
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA pgstac to pgstac_ingest;
211+
GRANT ALL ON ALL TABLES IN SCHEMA pgstac to pgstac_ingest;
212+
GRANT USAGE ON ALL SEQUENCES IN SCHEMA pgstac to pgstac_ingest;
213+
214+
SELECT update_partition_stats_q(partition) FROM partitions_view;
215+
SELECT set_version('0.7.9');

0 commit comments

Comments
 (0)