BUG #16534: autovacuum_autoanalyze not working on latitude(earth) expression

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: martin(at)tiogatours(dot)nl
Subject: BUG #16534: autovacuum_autoanalyze not working on latitude(earth) expression
Date: 2020-07-10 14:00:42
Message-ID: 16534-69f25077c45f34a5@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 16534
Logged by: Martin Winkel
Email address: martin(at)tiogatours(dot)nl
PostgreSQL version: 12.3
Operating system: Windows 10 x64 / Ubuntun 20.04 x64
Description:

I have indexes on on the latitude() and longitude() values of an
earth-column. I can analyze these tables, but autoanalyze fails. Because
autoanalyze fails, it will keep trying to analyze these tables.

I created a test-script. After this script, check the postgresql log, you
will find the error attachted below.

TEST SCRIPT:

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;

CREATE TABLE earthdisttest
(
id serial NOT NULL,
gps earth NOT NULL,
PRIMARY KEY (id)
);

CREATE INDEX idx_earthtest
ON earthdisttest USING btree
(latitude(gps) NULLS LAST);


ALTER TABLE earthdisttest SET (autovacuum_vacuum_scale_factor = 0.0);
ALTER TABLE earthdisttest SET (autovacuum_vacuum_threshold = 3);
ALTER TABLE earthdisttest SET (autovacuum_analyze_scale_factor = 0.0);
ALTER TABLE earthdisttest SET (autovacuum_analyze_threshold = 3);

INSERT INTO earthdisttest (gps) VALUES (ll_to_earth(10,30)),
(ll_to_earth(1,59)), (ll_to_earth(43,12)), (ll_to_earth(-10,23));

ERROR

2020-07-10 15:59:17.464 CEST [39988] ERROR: function
cube_ll_coord(public.earth, integer) does not exist at character 18
2020-07-10 15:59:17.464 CEST [39988] HINT: No function matches the given
name and argument types. You might need to add explicit type casts.
2020-07-10 15:59:17.464 CEST [39988] QUERY: SELECT CASE WHEN
cube_ll_coord($1, 3)/earth() < -1 THEN -90::float8 WHEN cube_ll_coord($1,
3)/earth() > 1 THEN 90::float8 ELSE degrees(asin(cube_ll_coord($1,
3)/earth())) END
2020-07-10 15:59:17.464 CEST [39988] CONTEXT: SQL function "latitude"
during inlining
automatic analyze of table "test.public.earthdisttest"

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2020-07-10 14:36:16 Re: BUG #16534: autovacuum_autoanalyze not working on latitude(earth) expression
Previous Message Hans-Jürgen Schönig (PostgreSQL) 2020-07-10 12:26:56 Re: TDE in PostgreSQL