[SCM] PostGIS branch stable-3.0 updated. 3.0.11-23-g89467dc26

git at osgeo.org git at osgeo.org
Wed Feb 4 21:15:53 PST 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, stable-3.0 has been updated
       via  89467dc26d9e4d9bfc7d6d47372970997696e194 (commit)
       via  2f87c5be808d3a969a3fa101290715ab6bb53496 (commit)
      from  8736b619abe7f5c75848521b03e2e626e58d3e01 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 89467dc26d9e4d9bfc7d6d47372970997696e194
Author: Regina Obe <lr at pcorp.us>
Date:   Thu Feb 5 00:14:53 2026 -0500

    Get rid of dronie config

diff --git a/.drone-1.0.yml b/.drone-1.0.yml
deleted file mode 100644
index 52e04cf11..000000000
--- a/.drone-1.0.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# This is for the drone 1.0 agent
-# https://docs.drone.io/user-guide/pipeline/steps/
-# https://dronie.osgeo.org #1.0 server
-
-# See https://git.osgeo.org/gitea/postgis/postgis-docker
-# todo: add docker images from https://hub.docker.com/r/postgis/postgis-build-env/tags/
-test-image: &test-image docker.osgeo.org/postgis/build-test:trisquel2
-clone: &clone
-    image: plugins/git
-    depth: 20
-    recursive: false
-
-kind: pipeline
-name: build
-clone: *clone
-steps:
-
-  - name: build-10
-    image: *test-image
-    pull: always
-    commands:
-      - PGVER=10 sh ci/dronie/postgis_regress.sh
-
-  - name: build-13
-    image: *test-image
-    pull: always
-    commands:
-      - PGVER=13 sh ci/dronie/postgis_regress.sh
-...

commit 2f87c5be808d3a969a3fa101290715ab6bb53496
Author: Regina Obe <lr at pcorp.us>
Date:   Thu Feb 5 00:11:45 2026 -0500

     TIGER EXTENSION SECURITY fix
    
        Ensure tables are created by tiger extension and bale if not. Patch provided by Andrey Borodin (Yandex)
        References #5998 for PostGIS 3.0.12

diff --git a/NEWS b/NEWS
index 1a7c37d08..d2daeb585 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
-PostGIS 3.0.12dev
-xxxx/xx/xx
+PostGIS 3.0.12 (EOL)
+2026/02/xx
 PostgreSQL 9.5-13 required. GEOS 3.6+ required but GEOS 3.9+ to take advantage of all features.
 Proj 4.9+ required.
 
@@ -13,6 +13,8 @@ Proj 4.9+ required.
  - Handle null returns from wkb parser, Paul Ramsey
  - #5818, GT-244 Fix CG_IsSolid function (Loïc Bartoletti)
  - #6028, Crash indexing malformed empty polygon (Paul Ramsey)
+ - #5998, [tiger_geocoder] [security] CVE-2022-2625, make sure tables requires
+           by extension are owned by extension
 
 
 PostGIS 3.0.11
diff --git a/extras/tiger_geocoder/pagc_normalize/pagc_tables.sql b/extras/tiger_geocoder/pagc_normalize/pagc_tables.sql
index ff78fc8f8..da6fc91a9 100644
--- a/extras/tiger_geocoder/pagc_normalize/pagc_tables.sql
+++ b/extras/tiger_geocoder/pagc_normalize/pagc_tables.sql
@@ -11,14 +11,23 @@ BEGIN
 	IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND table_name = 'pagc_gaz')  THEN
 		CREATE TABLE pagc_gaz (id serial NOT NULL primary key ,seq integer ,word text, stdword text, token integer,is_custom boolean NOT NULL default true);
 		GRANT SELECT ON pagc_gaz TO public;
+	ELSE
+		-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+		CREATE TABLE IF NOT EXISTS pagc_gaz (id serial NOT NULL primary key ,seq integer ,word text, stdword text, token integer,is_custom boolean NOT NULL default true);
 	END IF;
 	IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND table_name = 'pagc_lex')  THEN
 		CREATE TABLE pagc_lex (id serial NOT NULL primary key,seq integer,word text,stdword text,token integer,is_custom boolean NOT NULL default true);
 		GRANT SELECT ON pagc_lex TO public;
+	ELSE
+		-- Same as above.
+		CREATE TABLE IF NOT EXISTS pagc_lex (id serial NOT NULL primary key,seq integer,word text,stdword text,token integer,is_custom boolean NOT NULL default true);
 	END IF;
 	IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND table_name = 'pagc_rules')  THEN
 		CREATE TABLE pagc_rules (id serial NOT NULL primary key,rule text, is_custom boolean DEFAULT true);
 		GRANT SELECT ON pagc_rules TO public;
+	ELSE
+		-- Same as above.
+		CREATE TABLE IF NOT EXISTS pagc_rules (id serial NOT NULL primary key,rule text, is_custom boolean DEFAULT true);
 	END IF;
 	IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_schema = 'tiger' AND table_name = 'pagc_gaz' AND data_type='text')  THEN
 	-- its probably old table structure change type of lex and gaz columns
diff --git a/extras/tiger_geocoder/tiger_loader_2012.sql b/extras/tiger_geocoder/tiger_loader_2012.sql
index c4d6da1b7..00593ecf5 100644
--- a/extras/tiger_geocoder/tiger_loader_2012.sql
+++ b/extras/tiger_geocoder/tiger_loader_2012.sql
@@ -57,18 +57,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+   CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -125,9 +121,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -138,8 +132,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -149,7 +142,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2013.sql b/extras/tiger_geocoder/tiger_loader_2013.sql
index d42f60ea2..8b6e0d166 100644
--- a/extras/tiger_geocoder/tiger_loader_2013.sql
+++ b/extras/tiger_geocoder/tiger_loader_2013.sql
@@ -56,18 +56,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -124,9 +120,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -137,8 +131,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -148,7 +141,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2014.sql b/extras/tiger_geocoder/tiger_loader_2014.sql
index bedb84051..8726e5afe 100644
--- a/extras/tiger_geocoder/tiger_loader_2014.sql
+++ b/extras/tiger_geocoder/tiger_loader_2014.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -144,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -212,9 +274,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -225,8 +285,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -236,7 +295,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2015.sql b/extras/tiger_geocoder/tiger_loader_2015.sql
index fe0bdf62f..3311be2e7 100644
--- a/extras/tiger_geocoder/tiger_loader_2015.sql
+++ b/extras/tiger_geocoder/tiger_loader_2015.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -144,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -212,9 +274,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -225,8 +285,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -236,7 +295,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2016.sql b/extras/tiger_geocoder/tiger_loader_2016.sql
index 0cb93e442..39dd37f0a 100644
--- a/extras/tiger_geocoder/tiger_loader_2016.sql
+++ b/extras/tiger_geocoder/tiger_loader_2016.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -144,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -211,9 +273,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -224,8 +284,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -235,7 +294,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2017.sql b/extras/tiger_geocoder/tiger_loader_2017.sql
index 9a7c6a726..5644a4d53 100644
--- a/extras/tiger_geocoder/tiger_loader_2017.sql
+++ b/extras/tiger_geocoder/tiger_loader_2017.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -144,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -211,9 +273,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -224,8 +284,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -235,7 +294,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2018.sql b/extras/tiger_geocoder/tiger_loader_2018.sql
index 61e68797a..33697e785 100644
--- a/extras/tiger_geocoder/tiger_loader_2018.sql
+++ b/extras/tiger_geocoder/tiger_loader_2018.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -144,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -211,9 +273,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -224,8 +284,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -235,7 +294,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 
diff --git a/extras/tiger_geocoder/tiger_loader_2019.sql b/extras/tiger_geocoder/tiger_loader_2019.sql
index 3fce651ff..9485011cf 100644
--- a/extras/tiger_geocoder/tiger_loader_2019.sql
+++ b/extras/tiger_geocoder/tiger_loader_2019.sql
@@ -89,6 +89,72 @@ IF NOT EXISTS(SELECT table_name FROM information_schema.columns WHERE table_sche
 	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
 	);
 	COMMENT ON TABLE tiger.bg IS 'block groups';
+ELSE
+	-- Insist on invoking Postgres logic of owning table by extension. This prevent attacks like CVE-2022-2625.
+	CREATE TABLE IF NOT EXISTS tract
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  tract_id varchar(11) PRIMARY KEY,
+	  name varchar(7),
+	  namelsad varchar(20),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS tabblock
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blockce varchar(4),
+	  tabblock_id varchar(16) PRIMARY KEY,
+	  name varchar(20),
+	  mtfcc varchar(5),
+	  ur varchar(1),
+	  uace varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
+
+	CREATE TABLE IF NOT EXISTS bg
+	(
+	  gid serial NOT NULL,
+	  statefp varchar(2),
+	  countyfp varchar(3),
+	  tractce varchar(6),
+	  blkgrpce varchar(1),
+	  bg_id varchar(12) PRIMARY KEY,
+	  namelsad varchar(13),
+	  mtfcc varchar(5),
+	  funcstat varchar(1),
+	  aland double precision,
+	  awater double precision,
+	  intptlat varchar(11),
+	  intptlon varchar(12),
+	  the_geom geometry,
+	  CONSTRAINT enforce_dims_geom CHECK (st_ndims(the_geom) = 2),
+	  CONSTRAINT enforce_geotype_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
+	  CONSTRAINT enforce_srid_geom CHECK (st_srid(the_geom) = 4269)
+	);
 END IF;
 
 IF EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'tiger' AND column_name = 'tabblock_id' AND table_name = 'tabblock' AND character_maximum_length < 16)  THEN -- size of name and tabblock_id fields need to be increased
@@ -123,12 +189,11 @@ CREATE OR REPLACE FUNCTION drop_state_tables_generate_script(param_state text, p
 $$
 SELECT array_to_string(array_agg('DROP TABLE ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ';'),E'\n')
 	FROM (SELECT * FROM information_schema.tables
-	WHERE table_schema = $2 AND table_name like lower($1) || '~_%' ESCAPE '~' ORDER BY table_name) AS foo;
+	WHERE table_schema = $2 AND table_name like lower($1) || '_%' ORDER BY table_name) AS foo;
 ;
 $$
   LANGUAGE sql VOLATILE;
 
-
 -- Helper function that generates script to drop all nation tables (county, state) in a particular schema
 -- This is useful for loading 2011 because state and county tables aren't broken out into separate state files
 DROP FUNCTION IF EXISTS drop_national_tables_generate_script(text);
@@ -145,18 +210,14 @@ $$
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_platform' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_platform(os varchar(50) PRIMARY KEY, declare_sect text, pgbin text, wget text, unzip_command text, psql text, path_sep text, loader text, environ_set_command text, county_process_command text);
 END
 $$ LANGUAGE 'plpgsql';
 
 DO
 $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.schemata WHERE schema_name = 'tiger_data') THEN
-       CREATE SCHEMA tiger_data;
-  END IF;
+    CREATE SCHEMA IF NOT EXISTS tiger_data;
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -212,9 +273,7 @@ done');
 -- variables table
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_variables' AND table_schema = 'tiger') THEN
-      CREATE TABLE loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
-  END IF;
+    CREATE TABLE IF NOT EXISTS loader_variables(tiger_year varchar(4) PRIMARY KEY, website_root text, staging_fold text, data_schema text, staging_schema text);
 END
 $$ LANGUAGE 'plpgsql';
 
@@ -225,8 +284,7 @@ GRANT SELECT ON TABLE loader_variables TO public;
 
 DO $$
 BEGIN
-  IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'loader_lookuptables' AND table_schema = 'tiger') THEN
-   CREATE TABLE loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
+   CREATE TABLE IF NOT EXISTS loader_lookuptables(process_order integer NOT NULL DEFAULT 1000,
 		lookup_name text primary key,
 		table_name text, single_mode boolean NOT NULL DEFAULT true,
 		load boolean NOT NULL DEFAULT true,
@@ -236,7 +294,6 @@ BEGIN
 		post_load_process text, single_geom_mode boolean DEFAULT false,
 		insert_mode char(1) NOT NULL DEFAULT 'c',
 		pre_load_process text,columns_exclude text[], website_root_override text);
-  END IF;
 END
 $$ LANGUAGE 'plpgsql';
 

-----------------------------------------------------------------------

Summary of changes:
 .drone-1.0.yml                                     | 29 --------
 NEWS                                               |  6 +-
 .../tiger_geocoder/pagc_normalize/pagc_tables.sql  |  9 +++
 extras/tiger_geocoder/tiger_loader_2012.sql        | 16 +---
 extras/tiger_geocoder/tiger_loader_2013.sql        | 16 +---
 extras/tiger_geocoder/tiger_loader_2014.sql        | 82 ++++++++++++++++++---
 extras/tiger_geocoder/tiger_loader_2015.sql        | 82 ++++++++++++++++++---
 extras/tiger_geocoder/tiger_loader_2016.sql        | 82 ++++++++++++++++++---
 extras/tiger_geocoder/tiger_loader_2017.sql        | 82 ++++++++++++++++++---
 extras/tiger_geocoder/tiger_loader_2018.sql        | 82 ++++++++++++++++++---
 extras/tiger_geocoder/tiger_loader_2019.sql        | 85 ++++++++++++++++++----
 11 files changed, 442 insertions(+), 129 deletions(-)
 delete mode 100644 .drone-1.0.yml


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list